如何在循环中向空向量添加元素?

Amb*_*nna 30 c++ insert vector

我试图在循环中创建一个空向量,并希望每次将某个元素读入该循环时向该向量添加一个元素.

#include <iostream>
#include <vector>

using namespace std;

int main()
{
   std::vector<float> myVector();

   float x;
   while(cin >> x)
      myVector.insert(x);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

但这给了我错误信息.

Mar*_*cia 31

您需要使用std::vector::push_back():

while(cin >> x)
  myVector.push_back(x);
//         ^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

而不是std::vector::insert(),正如您在链接中看到的那样,需要一个迭代器来指示要插入元素的位置.

另外,正如@Joel所评论的那样,你应该删除vector变量定义中的括号.

std::vector<float> myVector;
Run Code Online (Sandbox Code Playgroud)

不是

std::vector<float> myVector();
Run Code Online (Sandbox Code Playgroud)

通过执行后者,您会遇到C++的Most Vexing Parse问题.


Yan*_*ang 6

使用push_back

while(cin >> x)
  myVector.push_back(x);
Run Code Online (Sandbox Code Playgroud)

insert函数采用迭代器作为第一个参数,指示要插入的位置。

另外,您需要去掉声明中的括号myVector

std::vector<float> myVector;
Run Code Online (Sandbox Code Playgroud)