[英]c++ multidimensional array multiple data types
我試圖在c ++中創建一個多維數組,其中涉及一個字符串和一個int。 我嘗試了int test[1][2] = {{"a", 1}, {"b", 2}, {"c", 3}};
但是g ++給了我以下內容:
example.cpp: In function ‘int getServer(std::string)’:
error: too many initializers for ‘int [1][2]’
error: invalid conversion from ‘const char*’ to ‘int’ [-fpermissive]
我也嘗試將char test[1][2]
也用於初始化程序,但這沒有用。
編輯:這將成為一個相當大的多維數組,需要它,以便我可以獲取值並基於長度可變的循環控制變量進行存儲。
使用std::pair
:
std::array<std::pair<std::string, int>, 3> test{{"a", 1}, {"b", 2}, {"c", 3}};
std::pair
適用於C ++ 03,但我使用的初始化和數組類型為C ++ 11。 您仍然可以使用普通數組和一堆std::make_pair
調用。
現在,您可以使用索引和first
或second
訪問每個內部元素:
test[0].first //"a"
test[2].second //3
在c ++中不允許這樣做。 數組只能具有一種類型,因此實際上不能像這樣指定具有兩種類型的數組。
我的想法是定義一個結構:
struct pair {
std::string s;
int i;
}
然后定義一個類型對的一維數組。 然后訪問您的元素,例如array[0].s
通常,這不應在C ++中完成。 如果要關聯對(例如,字符和整數),並希望將它們放在數組中,則應使用簡單的結構將兩者關聯,例如
struct MyPair {
char letter;
int number;
};
然后像這樣使用它:
MyPair pairAr[2];
MyPair myPair;
myPair.letter = 'a';
myPair.number = 1;
pairAr[0] = myPair;
通常,這更像是C風格。 您可能還需要考慮創建一個包含所需信息的類,並使用Vector
類(例如Vector
類)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.