2013-09-21 38 views
2

什麼是C#相當於C++這樣的:C#數組C++載體

int[n][num] card; 
someFunction(card[0]); 


someFunction(int[] card) 
{ 
    .... 
} 

使用載體在C++


而且

這段代碼在C++ :

std::vector< std::vector <int> > a(numA, vector<int>()); 

相當於這段代碼在C#:

int[][] a = new int[numA][]; 

如果不是,請告訴我應該如何。 謝謝。

回答

1
vector<vector<int> > card(n, std::vector<int>(num)); 
someFunction(card[0]); 

someFunction(vector<int> vec) 
{ 
    .... 
} 

此:

std::vector< std::vector <int> > a(numA, vector<int>()); 

和簡單

std::vector< std::vector <int> > a(numA); 

是C++交錯數組等同於:

int[][] a = new int[numA][]; 
+0

這對我有效!兩個答案都很好。 另一件事:你知道相當於複製像這樣的'a [n] .CopyTo(array,0)''的數組嗎? –

+0

@iLQ,如果'a'和'array'是向量然後'array.insert(array.begin(),a [n] .begin(),a [n] .end());' – cpp

2

我不知道C#,但這個看起來正確

std::vector< std::vector<int> > card; 
someFunction(card[0]); 


void someFunction(const std::vector<int>& card) 
{ 
    .... 
} 

使用&,表明你是參考傳遞載體,以避免複製載體本身的開銷。如果你想someFunction修改向量,然後刪除const

你的其他代碼看起來也不錯。

+0

稍微多一點精確_equivalent_將使用'.at(0)'而不是'[0]'。 :) – rightfold

+0

@iLQ你應該完全按照我所說的做,矢量就像一維數組。 – john