这是一个更具体的问题,关于我似乎遇到的这个任务的问题。基本上,说明是使用STL(而不是链接列表)创建一个列表。在这些例子中我看到的东西,如:C++列表未被识别为容器?
#include <vector>
#include <iterator>
vector<char> container = { 'A','B','C','D','E' };
cout << "Print vector using an iterator: ";
vector<char>::iterator iter = container.begin();
while (iter != container.end())
{
cout << *iter << " ";
++iter;
}
cout << endl; // OUTPUT: A B C D E
虽然我尝试在我的任务的Main.cpp的文件做:
#include "AnyList.h"
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
AnyList list1, list2;
list1.insertFront(10);
list1.insertFront(11);
list1.insertFront(12);
list1.insertFront(13);
list1.insertFront(14);
list<int>::const_iterator iter = list1.begin();
AnyList.h
#ifndef ANYLIST_H
#define ANYLIST_H
#include<iostream>
#include <string>
#include <list>
#include <vector>
#include <iterator>
class AnyList
{
public:
AnyList();
int getNumOfElem() const;
void insertFront(int data);
void forwardPrint();
private:
list<int> *ptr;
};
#endif
AnyList.cpp
#include "AnyList.h"
#include <vector>
#include <iterator>
AnyList::AnyList()
{
}
int AnyList::getNumOfElem() const
{
return static_cast<int>(ptr->size());
}
void AnyList::insertFront(int data)
{
ptr->push_front(data);
}
void AnyList::forwardPrint()
{
list<int>::const_iterator i;
for (i = ptr->begin(); i != ptr->end(); ++i)
{
cout << *i << " ";
cout << endl;
}
}
在主文件中,对于行:
list :: const_iterator iter = list1.begin();
我收到一个错误,说“开始”不是AnyList的成员。我查了一下问题可能是什么,好像它是由list1不是一个实际的容器引起的?从它看起来应该是由insertFront创建的列表的容器,但它不认识它。
列表是如何实现的?或者是insertFront没有正确完成?实际上,我试图用该行来运行程序的全部原因是为了了解insertFront是否正常工作,但现在我不知道错误在哪里。我见过的大多数示例都是在一个文件中声明的,而不必在类中实现,因此在这一点上该赋值非常混乱。
同样为了清除一些潜在的误解: - AnyList类,私有成员变量和getNumOfElem函数已包含在文件中,getNumOfElem作为实际实现示例提供。
编辑:另外我确实需要一些关于如何在这里正确初始化变量“ptr”的帮助,因为据说这也可能是阻止大量工作的问题。
问题是,'AnyList'从字面上不提供'begin'方法。我的意思是,你有这个声明:它支持'getNumOfElem','insertFront','forwardPrint'。而已。 – melpomene
也许尝试自己做这个任务?你似乎试图为你写,这是一次愚蠢的错误。 – juanchopanza
我试图做到这一点,这是它的开始。我的意思是,如果我知道如何解决出现的问题,这些问题就没有必要了。 – BaloneyOs