繁体   English   中英

在 C++ 中使用向量在带有循环的动态数组中插入值

[英]insert value in dynamic array with loop using vector in c++

我想在动态数组k插入值。 这是我的代码。

cin >> n;
std::vector<int> k;

for(int i = 0 ; i< n ; i++) {
   cin >> k[i];
}

但它不存储任何值。 我不知道为什么,请帮助我

cin >> k[i]; 正在尝试读入尚不存在的vector位置( k是一个具有零元素的空容器)。

您想先读入整数,然后将其添加到vector如下所示:

int num;
cin >> num;
k.push_back(num);

或者,您可以先调整k大小,以便通过执行k.resize(n);在您要访问的所有索引处都有元素k.resize(n); 在读入n (或立即以正确的大小创建它)之后,您现有的代码就可以了。

std::vector::operator[]调整容器。 它只访问预先存在的元素,如果访问的元素不在容器的边界内,则行为未定义。

由于 vector 是动态数组,因此您应该使用push_back而不是 operator []来指定要添加新元素。

下面的一段代码可以工作:

for(int i = 0 ; i< n ; i++) {
     int element;
     cin >> element; 
     k.push_back(element);
}

或者更好的是,您可以通过调用将初始容器大小作为参数的构造函数来初始化您的向量对象。 稍后您始终可以使用push_back再次向向量添加新元素。

在这种情况下,您需要使用push_back应该是这样的:

#include <vector>

int main ()
{
  std::vector<int> myvector;
  int myint;

  std::cout << "Please enter some Numbers (enter 0 to end):\n";

  do {
    std::cin >> myint;
    myvector.push_back (myint);
  } while (myint);

  std::cout << "myvector stores " << int(myvector.size()) << " numbers.\n";

  return 0;
}

这是一个示例代码,但应该可以让您了解如何使用 Vectors 和 push_back。

干杯

你不需要采取另一个变量只是写

vector<int>k

for(int i = 0 ; i< n ; i++) {
     
     k.push_back(i);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM