Так что сейчас я пытаюсь реализовать список, используя STL, но я застрял в том, что делать для функции печати. Я искал решения, но у меня есть трудное понимание времени. У меня возникли проблемы с использованием итераторов в этой реализации.C++ создание и печать списка STL (вместо связанного списка)
Вот мой код:
AnyList.h:
class AnyList
{
public:
AnyList();
int getNumOfElem() const;
void insertFront(int data);
void forwardPrint();
private:
list<int> *ptr;
};
AnyList.cpp:
AnyList::AnyList()
{
ptr->begin(); //added
}
int AnyList::getNumOfElem() const
{
return static_cast<int>(ptr->size());
}
void AnyList::insertFront(int data)
{
ptr->push_front(data);
}
void AnyList::forwardPrint()
{
//const list<int> & iter; //removed
list<int>::const_iterator i;
for (i = ptr->begin(); i != ptr->end(); ++i) //changed
{
cout << *i << " ";
cout << endl;
}
}
main.cpp
int main()
{
AnyList list1, list2;
list1.insertFront(10);
list1.insertFront(11);
list1.insertFront(12);
list1.insertFront(13);
list1.insertFront(14);
cout << "\nList 1: ";
list1.forwardPrint();
}
Любое понимание было бы весьма признателен , На данный момент я даже не знаю, как проверить, работает ли функция insertFront без функции печати.
Редактировать: внесли некоторые изменения в код и пометили их.
Edit2: Просто включив скриншот инструкций, чтобы было меньше путаницы относительно того, что я должен выполнять здесь.
Просто повторить - Файл проекта пришел с классом AnyList, который включает в себя частный член списка переменных * PTR и функции getNumOfElements() в качестве примера рабочей функции. В основной файл гораздо больше, но я включил первую часть, которая должна работать, если я правильно реализую функции insertFront и forwardPrint.
Редактировать 3: Для дальнейшего уточнения того, что я считаю, что я запутался, примеры которых я вижу везде идти что-то вроде этого:
vector<string> SS;
SS.push_back("The number is 10");
SS.push_back("The number is 20");
SS.push_back("The number is 30");
cout << "Loop by index:" << endl;
int ii;
for(ii=0; ii < SS.size(); ii++)
{
cout << SS[ii] << endl;
}
cout << endl << "Constant Iterator:" << endl;
который хорош, но как я могу реализовать что-то вроде этого, как то, что инструкции скажите, что я должен делать? То, что я пробовал, не сработало.
Почему бы просто не использовать 'std :: list' вместо 'AnyList'? –
juanchopanza
Мое понимание: вам совсем не нужно 'AnyList'. Все, что вам нужно, это функция для печати элементов 'std :: list'. И вы можете обобщить это на тот, который работает с различными типами контейнеров. – juanchopanza
Ну, в основном нам нужно реализовать связанный список как список STL, а класс AnyList уже был предоставлен вместе с функцией getNumOfElem() в качестве примера. Мы должны строить на нем афайк. – BaloneyOs