【发布时间】:2014-06-16 07:49:43
【问题描述】:
我正在尝试用向量替换数组,但我不知道怎么做。
替换此函数为向量动态分配内存:
string readFile(string filename, string** list, int size){
*list = new string[size];
ifstream file(filename);
string line;
for (int i = 0; i < size; i++){
getline(file, line);
*(*list + i) = line;
}
file.close();
return **list;
}
这是我尝试将其更改为矢量但没有运气的尝试。非常感谢任何反馈:
string processFile(string filename, vector<string>** list, int size){
*list = new vector<string>(size);
ifstream file(filename);
string line;
for (int i = 0; i < size; i++){
getline(file, line);
*list[i] = line; // error
}
file.close();
return **list; // error
}
【问题讨论】:
-
只需放下指针和动态分配。使用
std::vector等容器的原因之一是您不必做那种事情。 -
感谢您的反馈,但是我们的老师要求我们使用vector new。
-
天哪。好吧,我希望他们有充分的理由,但我对此表示严重怀疑。顺便说一句,您的代码还有另一个问题:您循环了一定数量的行而不检查文件中是否还有要读取的行。
标签: c++ vector dynamic-memory-allocation