2012-05-03 83 views
-1

我有這樣如何返回在C++ 2D的字符串數組/矢量

typedef vector<vector<string> > vecArray; 
vecArray dul(); 

vecArray dul() { 
    vecArray arr = { 
        { "a", "b", "c" }, 
        { "a", "b", "c" }, 
        { "a", "v", "d" } 
        }; 
    return arr; 
} 

我要回看起來像波紋管串在C函數++函數

{ 
{"ffsff","aaaasda","ddaddd"}, 
{"sfsasda","sdadsfd","asasaad"}, 
{"adacv","fasfaa","asa","aba"} 
} 
+1

這應該工作。它出什麼問題了?這隻適用於C++ 11,初始化列表可以作爲參數,請注意。 – chris

+0

我得到了「在C++ 98中'arr'必須由構造函數初始化,而不是'{...}'」錯誤 – user881703

+0

是的,您需要C++ 11才能使用該語法。這是因爲在C++ 11中,vector現在可以 - 並且提供了一個構造函數來獲取初始化器列表。有關此處的更多信息:http://www2.research.att.com/~bs/C++0xFAQ.html#init-list。但是,您可以製作二維數組字符串並使用它來構建您的矢量。 – chris

回答

1

你不能建造一個向量與初始化程序列表,因爲該功能僅在C++ 11中可用。您可以輕鬆地使用二維數組構建矢量。

vecArray dul() { 
    string arrTemp [3][3] = //create 2D array of strings 
     { 
      { "a", "b", "c" }, 
      { "a", "b", "c" }, 
      { "a", "v", "d" } 
     }; 

    vecArray arr; //here's our vector 

    //for 3 arrays, push each onto back of vector using the iterator constructor 
    for (vecArray::size_type i = 0; i < 3; ++i) 
     arr.push_back (vector<string> (arrTemp [i], arrTemp [i] + 3)); 

    return arr; 
}