Bir ev ödevi üzerinde sıkışmış durumdayım. Bir dosyadan metni okumalı, her kelimeyi belleğe ayırmalıyım, ardından bir işaretçiyi bir vector<string*>
adresine göndermek için kullanmalıyım. Programım, yeni kelimeyle vektörün üzerine yazmanın yerine yeni kelimeyle yazılmasına devam ediyor. Bunun neden olduğunu anlayamıyorum.C++ işaretçi ile işaretçi
#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");
}
Geez yeni başvuru geçmesi, döngü içinde yeni dizeleri için bellek ayırması gerekir .. ödeviniz aslında sizi bir işaretçi vektörünü kullanmaya zorlar ve bunun neden korkunç bir fikir olduğunu açıklamıyor mu? Sadece bildiğiniz gibi, vektörünüzdeki her bir elementi elden çıkarma sorumluluğunuz var, bu da size verilen büyük bir faydayı reddediyor. * Bazen * vektörlere (genellikle değil!) işaretçileri kaydetmeniz gerekir ve bu durumda akıllı bir işaretçi, yani 'unique_ptr' veya benzer bir şey kullanırsınız. Onu bir daha gördüğünüzde öğretmeninize söyleyin. –