簡體   English   中英

c ++中類似Java的Arrays.asList()

[英]Java-like Arrays.asList() in c++

c ++是否支持STL,或者是否存在支持Arrays.asList()的外部庫?

典型用法

private ArrayList<String> lexeme = new ArrayList<String>(Arrays.asList(" ", ",", "(", ")", ";", "=", ".", "*", "-"));

我正在使用Visual Studio 11(2012)並且他們沒有包含c ++ 11特性Initializer lists讓我處於一個quandry中,初始化了九個唯一字符串的向量而沒有

std::vector<std::string>::push_back("a");
std::vector<std::string>::push_back("b");
std::vector<std::string>::push_back("c");
                 . . .

在C ++ 11之前要做的一件事是首先創建一個數組,然后用它初始化向量,例如:

char const * arr[] = { " ", ",", "(", ")", ";", "=", ".", "*", "-" };
std::vector<std::string> str_vec(arr, arr + sizeof(arr) / sizeof(*arr));

當然,VS11確實支持一些C ++ 11,所以你可以這樣做,它更具可讀性:

char const * arr[] = { " ", ",", "(", ")", ";", "=", ".", "*", "-" };
std::vector<std::string> str_vec(std::begin(arr), std::end(arr));

你可以使用:

const char* arr[] = {"a", "bc", "def"};
std::vector<std::string> vec(std::begin(arr), std::end(arr));

如果你的編譯器不支持std::begin()std::end() ,那么很容易做到:

std::vector<std::string> vec(arr, arr + sizeof(arr) / sizeof(*arr));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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