Tôi bị kẹt trên một bài tập về nhà. Tôi phải đọc văn bản từ một tập tin, phân bổ mỗi từ vào bộ nhớ, sau đó người dùng một con trỏ để gửi nó đến một vector<string*>
. Chương trình của tôi tiếp tục ghi đè vectơ với từ mới từ tệp thay vì chỉ thêm nó. Tôi không thể hiểu tại sao điều này lại xảy ra.C++ vector với con trỏ
#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 .. Nhiệm vụ của bạn thực sự buộc bạn phải sử dụng một vector con trỏ và không giải thích tại sao đây là một ý tưởng khủng khiếp? Như bạn đã biết, bây giờ bạn có gánh nặng giải quyết mọi phần tử trong vectơ của bạn theo cách thủ công, phủ nhận một lợi ích to lớn mà vectơ mang lại cho bạn. * đôi khi * bạn cần lưu trữ con trỏ trong vectơ (không thường xuyên!) và trong trường hợp đó, bạn sẽ sử dụng con trỏ thông minh, tức là 'unique_ptr' hoặc một cái gì đó tương tự. Hãy chắc chắn nói với giáo viên của bạn lần sau khi bạn gặp anh ấy/cô ấy. –