簡體   English   中英

在運行時設置向量的向量大小

[英]Set size of vector of vectors at run time

我想知道,如何在運行時設置向量的大小。

如果我的尺碼固定,我通常會這樣做

std::vector<std::vector<int>> ref(5);

我將元素推入特定向量

ref[i].push_back(23); // i = 0,1,...4

現在,如果有興趣在運行時設置大小,則意味着,我想通過命令行參數獲取大小,並以與上述相同的方式推送元素。

我想通過保持向量開放來聲明向量的向量

std::vector<std::vector<int>> ref;

然后推元素

ref[i].push_back(23);

但是我肯定會錯的,因為我得到了錯誤

分段故障(核心已轉儲)

我想通過命令行參數獲取大小,並以與上述相同的方式推送元素。

在詢問i之前詢問用戶最大尺寸:

cout << "What is the size of your vector? ";
int size;
cin >> size;
std::vector<std::vector<int>> ref(size);

現在您可以要求i ,檢查它們的size ,然后調用ref[i]而不會崩潰。

您可以使用std::vector::resize 如果輸入大小大於向量的當前大小而不增加向量的內容,則它將增加向量的容量。 (它可能會重新分配向量,但這不會影響您的程序)

像您一樣初始化向量:
vector<vector<int> > ref;

現在,每當您后退時,請檢查i是否在向量的當前大小范圍內。 如果不是,請調整std::vector大小,然后調用std::vector::push_back

if(i>=ref.size())
    ref.resize(i);
ref[i].push_back(23);

您可以很好地保持打開狀態,只是忘記了初始化。

std::vector<std::vector<int>> ref{{}}

編輯:當然,如果您希望ref增長,則還需要在其中推回向量:

std::vector<int> v1;
ref.push_back(v1);

然后,

ref[1][0]=23.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM