[英]vector of vector push back
我初始化了一個int向量的向量。 內部向量的大小是任意的。 我閱讀了相關問題,但仍然無法解決我的問題。
vector<vector<int> > vec;
vector<int> get(int i) {
return vec[i];
}
int main() {
vec.resize(5); // Only the first dimension has the fixed size
get(2).push_back(2); // If I do vec[2].push_back(2), it will work
get(1).push_back(34);
for (int i = 0; i < 5; ++i) {
cout << vec[i].size() << endl; // output: 0
for (int j = 0; j < vec[i].size(); ++j) {
cout << vec[i][j] << endl;
}
}
}
我認為使用get()方法時會出錯。 但我看不出問題出在哪里。
您要返回對向量的引用,而不是副本。
更改
vector<int> get(int i) {
return vec[i];
}
至
vector<int>& get(int i) {
return vec[i];
}
為了返回參考。
問題是,您從get返回了一個副本,而不是您要解決的實際實例。
將您的代碼更改為
vector<int>& get(int i) {
// ^
return vec[i];
}
您遇到的問題是get
函數返回的是向量的副本,而不是實際的向量。 您可以做幾件事:
vector<int> * get(..
獲取指向內部的指針vector<int> * get(..
並取消引用它( 這很糟糕,不要這樣做 vector<int> &get(..
的引用( 更好,但仍然 ) vector
,函數get不會增加任何好處,向量已經具有一個at
命令(以及operator []
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.