[英]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.