【发布时间】:2012-11-07 17:22:11
【问题描述】:
我有一个list<string> myList 作为我班级的私有属性。该列表的内容在编译时是已知的并且是恒定的。是否有任何紧凑的方法(在 C++03 中)来初始化它的值?我只能这么想:
MyClass::MyClass(){
myList.push_back(string("str1"));
myList.push_back(string("str2"));
myList.push_back(string("str3"));
etc.
}
我想要这样的东西:
MyClass::MyClass():list("str1","str2","str3",etc.){
}
【问题讨论】:
-
你想要的是std::initializer_list,它只在C++11之后才可用。
-
你可以使用像boost.org/doc/libs/1_52_0/libs/assign/doc/index.html这样的黑客:)
-
您可以定义一个全局字符串数组并使用列表的两个迭代器构造函数:
std::string arr[3] = { "str1", "str2", "str3" }; MyClass::MyClass() : myList(arr, arr+3) { } -
不要使用
std::list,除非是非常特殊的情况。如果您不知道这些是什么,请不要使用std::list。
标签: c++ list initialization initializer c++03