これは、私がこの課題に対して取り組んでいる問題のより具体的な質問です。基本的には、(リンクされたリストの代わりに)STLを使用してリストを作成することです。私は私の割り当てのMAIN.CPPファイルに実行しようとしながら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
:例では私のようなものを見
#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();
"begin"はAnyListのメンバーではないというエラーが表示されます。私は問題が何であるかを調べました。実際のコンテナではないlist1によって引き起こされたようです。それはinsertFrontによって作成されたリストのコンテナでなければなりませんが、それを認識していません。
リストの実装方法に間違いがありますか?または、insertFrontが正しく行われていませんか?実際にその行でプログラムを実行しようとした理由は、insertFrontが正常に動作しているかどうかを確認することですが、今は間違いがどこにあるのかわかりません。私が見た例のほとんどは、クラス内で実装することなく1つのファイルで宣言されているため、この割り当てはこの時点で非常に混乱しています。
- AnyListクラス、privateメンバー変数、およびgetNumOfElem関数はすでにファイルに含まれており、getNumOfElemは実際の実装例として提供されています。
編集:また、変数「ptr」をここで正しく初期化する方法についての助けが必要です。なぜなら、これが多くのことを妨げている問題かもしれないからです。
問題は 'AnyList'は文字通り' begin'メソッドを提供しないということです。つまり、getNumOfElem'、 'insertFront'、' forwardPrint'をサポートしています。それでおしまい。 – melpomene
この課題を自分で解決しようとしているかもしれませんか?あなたはそれをあなたのために書いてみようとしているようです、一度に一つの愚かな間違い。 – juanchopanza
私はそれをやろうとしており、これがその始まりです。私は、これらの質問が出てくる問題を解決する方法を知っていれば、必要ではないと思います。 – BaloneyOs