簡體   English   中英

C ++多維數組多種數據類型

[英]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調用。

現在,您可以使用索引和firstsecond訪問每個內部元素:

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.

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