私は宿題に固執しています。私はファイルからテキストを読んで、各単語をメモリに割り当ててから、ポインタをvector<string*>
に送るためのポインタを割り当てなければなりません。私のプログラムは、ファイルを単に追加するのではなく、新しい単語でベクトルを上書きし続けます。なぜこれが起こっているのか分かりません。ポインタ付きC++ベクタ
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
void WordFunctions(string *pstr, vector<string*> &words)
{
words.push_back(pstr);
}
int main(){
ifstream file;
vector<string*> a;
string word;
int w =0;
file.open("word.txt");
while (!file.eof())
{
w++;
file >> word;
WordFunctions(&word, a);
}
file.close();
for (int i=0;i<10;i++){
cout<<(*a[i])<<" ";
delete a[i];
}
system ("pause");
}
もぉに新しい参照を渡す、ループ内で新しい文字列にメモリを割り当てる必要があります。..あなたの割り当ては、実際にポインタのベクトルを使用するように強制し、なぜこれが恐ろしいアイデアであるのか説明しません。あなたが知っているように、今はベクトルのすべての要素を手動で割り当て解除する負担があり、ベクトルがあなたに与える大きな利点を否定します。 *時にはポインタをベクターに格納する必要があります(しばしば!)、その場合はスマートポインタ、つまり 'unique_ptr'かそれに類するものを使用します。あなたが彼/彼女を見る次回に先生に必ず伝えるようにしてください。 –