這是一個更具體的問題,關於我似乎遇到的這個任務的問題。基本上,說明是使用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