2010-12-08 37 views
5

hem C++ ve bir karma dizisi oluşturmak mümkün mü C#Karışık C++ Diziler ve C#

Ben karakter ve int'leri hem içeren bir dizi demek?

örn:

Array [][] = {{'a',1},{'b',2},{'c',3}}; 
+0

Neden isterdiniz? – Beta

+1

A char, C++ –

cevap

3

C++ hastayı yalnızca her demet içinde iki öğe varsa std::vector<boost::tuple< , , > veya std::vector<std::pair> gibi bir şey kullanmak gerekir. C++ durum için

Örnek: (boost::assign kullanılarak) C++ durumu için

typedef std::pair<int, char> Pair; 

std::vector<Pair> pairs; 

pairs.push_back(Pair(0, 'c')); 
pairs.push_back(Pair(1, 'a')); 
pairs.push_back(Pair(42, 'b')); 

Genişletilmiş bir örnek. C# için


using boost::assign; 

std::vector<Pair> pairs; 

pairs += Pair(0, 'c'), Pair(1, 'a'), Pair(42, 'b'); 
C# ve C ise this.

+0

'da bir tam sayıdır, bunun nasıl gerçekleştirileceğine dair bir örnek verebilir misiniz? – sikas

+0

std :: vector std :: pair ('a', 1) yerine – Svisstack

0

görmek isteyebilir ++ o karışık türleri dizisi oluşturmak mümkün değil. C++ 'da std :: vektörü veya # < char, int > C# gibi diğer sınıfları kullanmalısınız.

9

Ne C# ne de yerli diziler kullanarak veri yapısı bu tür oluşturarak C++ desteği, ancak C++ bir C# List<Tuple<char,int>> veya std::vector<std::pair<char,int>> oluşturabilir.

Öğelerden biri benzersiz bir anahtar olarak düşünülebiliyorsa ve öğelerin sırası önemsizdir, ancak yalnızca onların ilişkilendirmesi ise, Dictionary<> veya std::map<> koleksiyonlarını kullanmayı da düşünebilirsiniz.

List<Tuple<char,int>> items = new List<Tuple<char,int>>(); 

items.Add(new Tuple<char,int>('a', 1)); 
items.Add(new Tuple<char,int>('b', 2)); 
items.Add(new Tuple<char,int>('c', 3)); 

ve C aşağıdakileri yazarsınız ++: listelerinin (ziyade sözlükler yerine) durumunda için

, C# Eğer yazardım

std::vector<std::pair<char,int>> items; // you could typedef std::pair<char,int> 
items.push_back(std::pair<char,int>('a', 1)); 
items.push_back(std::pair<char,int>('b', 2)); 
items.push_back(std::pair<char,int>('c', 3)); 
+0

yerine stdlib'in size kolaylık sağladığını belirten std :: make_pair ('a', 1) kullanabilirsiniz :) – etarion

+0

Neden Bir çift çift/tuple mı yapıyor? Tek seçeneğinin neden Liste/vektör'e geçmek olduğunu görmemin bir sebebi var mı? – jalf

+0

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ –

0

klasik dizi (olanı Köşeli parantez) yalnızca kendi bildiriminin bir parçası olan int türünde olabilir. Dizi yok [].