不能迭代向量
cannot iterate on a vector
所以,我想从 .txt 文件中读取值,这些值非常简单,在同一行上有四个浮点值。
我写了这个:
int read_calibration () {
std::ifstream input("floor.txt");
if (!input.good())
{
cout << "floor info file does not exist!" << endl;
return -1;
}
std::vector<float> data(std::istream_iterator<float>(input),
std::istream_iterator<float>());
for (std::vector<float>::iterator it = data.begin() ; it != data.end(); ++it)
std::cout << ' ' << *it;
return 0;
}
当我构建它时出现此错误:
error: request for member ‘begin’ in ‘data’, which is of non-class type ‘std::vector<float>(std::istream_iterator<float>, std::istream_iterator<float> (*)())’
for (std::vector<float>::iterator it = data.begin() ; it != data.end(); ++it)
我 运行 Ubuntu 14.04 使用 gcc 版本 4.8.4
最烦人的解析:-/
使用{}
std::vector<float> data{std::istream_iterator<float>(input),
std::istream_iterator<float>()};
或
auto data = std::vector<float>(std::istream_iterator<float>(input),
std::istream_iterator<float>());
改为这样说:
std::vector<float> data(std::istream_iterator<float>(input), {});
您的原始代码不是定义变量,而是声明函数。
所以,我想从 .txt 文件中读取值,这些值非常简单,在同一行上有四个浮点值。 我写了这个:
int read_calibration () {
std::ifstream input("floor.txt");
if (!input.good())
{
cout << "floor info file does not exist!" << endl;
return -1;
}
std::vector<float> data(std::istream_iterator<float>(input),
std::istream_iterator<float>());
for (std::vector<float>::iterator it = data.begin() ; it != data.end(); ++it)
std::cout << ' ' << *it;
return 0;
}
当我构建它时出现此错误:
error: request for member ‘begin’ in ‘data’, which is of non-class type ‘std::vector<float>(std::istream_iterator<float>, std::istream_iterator<float> (*)())’
for (std::vector<float>::iterator it = data.begin() ; it != data.end(); ++it)
我 运行 Ubuntu 14.04 使用 gcc 版本 4.8.4
最烦人的解析:-/
使用{}
std::vector<float> data{std::istream_iterator<float>(input),
std::istream_iterator<float>()};
或
auto data = std::vector<float>(std::istream_iterator<float>(input),
std::istream_iterator<float>());
改为这样说:
std::vector<float> data(std::istream_iterator<float>(input), {});
您的原始代码不是定义变量,而是声明函数。