簡體   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