我正在尝试在循环内创建一个空向量,并希望在每次将某些内容读入该循环时向该向量添加一个元素。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
std::vector<float> myVector();
float x;
while(cin >> x)
myVector.insert(x);
return 0;
}
但这给了我错误消息。
您需要std::vector::push_back()
改用:
while(cin >> x)
myVector.push_back(x);
// ^^^^^^^^^
而 not std::vector::insert()
,正如您在链接中看到的那样,它需要一个迭代器来指示您要插入元素的位置。
此外,正如@Joel 所评论的那样,您应该删除向量变量定义中的括号。
std::vector<float> myVector;
而不是
std::vector<float> myVector();
通过执行后者,您会遇到 C++最令人头疼的解析问题。
想myVector.insert()
用就用就好myVector.insert(myVector.end(), x)
。这将在 myVector 的末尾附加 x。您可以在开头插入 x myVector.insert(myVector.begin(), x)
。
另一种选择是使用std::vector::emplace_back()
而不是std::vector::push_back()
. 进行了一些优化并且不采用 type 的参数vector::value_type
,它采用可变参数,这些参数被转发给附加项的构造函数,同时push_back
可以进行不必要的复制或移动。
这在std::vector::emplace_back文档中得到了证明,这是一个相关的问题。
使用示例:
std::vector<int> myVector;
while (cin >> x) {
myVector.emplace_back(x);
}