我有这个代码
void split(vector<float> &fvec, string str)
{
int place = 0;
for(int i=0; i<str.length(); i++)
{
if(str.at(i) == ' ')
{
fvec.push_back(atoi(str.substr(place,i-place).c_str()));
place=i+1;
}
}
fvec.push_back(atoi(str.substr(place).c_str()));
}
我想做的是将对 vector 的引用传递给方法,以便将我给它的字符串拆分为浮点数而不复制 vector ...我不想复制 vector ,因为它将包含1000的数字。
无法通过引用传递 vector ,还是我只是犯了一个愚蠢的错误?
如果有帮助的话,我将用以下代码对其进行测试
int main (void)
{
vector<float> fvec;
string str = "1 2 2 3.5 1.1";
split(&fvec, str);
cout<<fvec[0];
return 0;
}
最佳答案
确实有可能。您只是使用了错误的语法。正确的方法是:
split(fvec, str);
您正在执行的操作是错误的,因为它会将 vector 的地址作为预期的引用传递。