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

新手上路,请多包涵

我正在尝试在循环内创建一个空向量,并希望在每次将某些内容读入该循环时向该向量添加一个元素。

 #include <iostream>
#include <vector>

using namespace std;

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

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

   return 0;
}

但这给了我错误消息。

原文由 Amber Roxanna 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 895
2 个回答

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

 while(cin >> x)
  myVector.push_back(x);
//         ^^^^^^^^^

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

此外,正如 @Joel 所评论 的那样,您应该删除向量变量定义中的括号。

 std::vector<float> myVector;

不是

std::vector<float> myVector();

通过执行后者,您会遇到 C++ 最令人头疼的解析 问题。

原文由 Mark Garcia 发布,翻译遵循 CC BY-SA 3.0 许可协议

下面的代码可能会回答您的问题,并且还提供了一些有关如何在不同位置或索引中插入新元素的其他示例。

 #include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> vector_of_integers{};

    vector_of_integers.push_back(1); // O(1)
    vector_of_integers.push_back(3); // O(1)
    vector_of_integers.push_back(5); // O(1)
    vector_of_integers.push_back(7); // O(1)

    for (int i = 8; i <= 10; i++)
        vector_of_integers.push_back(i);

    // Printing out all the elements of vector of integers - Method 1
    copy(vector_of_integers.begin(), vector_of_integers.end(), ostream_iterator<int>(cout, " ")); // 1 3 5 7 8 9 10
    cout << endl << endl;

    // Inserting '2' at index 1
    vector<int>::iterator it{ vector_of_integers.begin() };
    advance(it, 1);
    vector_of_integers.insert(it, 2); // O(N+M) => M is size of elements to be inserted

    // Printing out all the elements of vector of integers - Method 2
    for (auto const& element : vector_of_integers)
        std::cout << element << " "; // 1 2 3 5 7 8 9 10
    cout << endl << endl;

    // "it" no longer valid, get a new one
    it = vector_of_integers.begin();
    vector_of_integers.insert(it + 4, 6); // O(N+M) => M is size of elements to be inserted

    // Printing out all the elements of vector of integers - Method 3
    for (it = vector_of_integers.begin(); it != vector_of_integers.end(); it++)
        std::cout << *it << ' '; // 1 2 3 5 6 7 8 9 10
    cout << endl << endl;

    // insert '4' 7 times at index 3
    vector<int> new_vector_to_be_inserted(7, 4);
    vector_of_integers.insert(vector_of_integers.begin() + 3, new_vector_to_be_inserted.begin(), new_vector_to_be_inserted.end()); // O(N+M) => M is size of elements to be inserted

    // Printing out all the elements of vector of integers - Method 4
    for (int i = 0; i < vector_of_integers.size(); i++)
        cout << vector_of_integers.at(i) << ' '; // 1 2 3 4 4 4 4 4 4 4 5 6 7 8 9 10
    cout << endl << endl;

    return 0;
}

原文由 JRbarros 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题