簡體   English   中英

傳遞向量 <vector<int> &gt;指向參數的指針?

[英]Passing a vector<vector<int> > pointer to a argument?

好的,所以我試圖將指針傳遞給這樣的參數。

void function(vector<vector<int> > *i){
 vector<int> j;
 j.push_back(5);
 i->push_back(j);
}

並使用function(&i)調用

但是當我這樣做時,它說i [0] [0]是0而不是5。

為什么會這樣呢?

編輯:

int main(){ 
vector<vector<int> > test;
function(&test);
cout << test[0][0];
}

你可以試試這段代碼:

void f(vector<vector<int> > *i)
{
   vector<int> j;
   j.push_back(5);
   i->push_back(j);
}
vector<vector<int> > i;
f(&i);
cout << i[0][0];

輸出:

5

演示: http//ideone.com/hzCtV

或者,您也可以按如下所示通過引用傳遞: http : //ideone.com/wA2tc

我假設您將函數稱為function(test)而不是function(&test)因為第二個function(&test)無法編譯。 您的main代碼是錯誤的。 您應該將test聲明為vector<vector<int> > test; (不帶* )。 在當前形式下,您剛剛定義了指向向量的指針 ,而沒有實際分配向量本身。 如果嘗試取消引用該指針(嘗試執行i->push_back() ,則將調用未定義的行為。

至少在我的機器上,這給了我5分!

#include <vector>
#include <stdio.h>

using std::vector;

void vf(vector<vector<int> > * i) {
   vector<int> j;
   j.push_back(5);
   i->push_back(j);
}

int main() {
   vector<vector<int> > j;
   vf(&j);
   printf("c: %d\n",j[0][0]);
}

您應該使用引用而不是指針,除非NULL是指針可接受的值。 通過這樣做,您可以避免必須測試NULL指針條件,並且有助於清理語法。

暫無
暫無

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

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