[英]Initialize a vector array of strings
Would it be possible to initialize a vector array of strings. 是否可以初始化字符串的向量数组。
for example: 例如:
static std::vector<std::string> v;
//declared as a class member //声明为类成员
I used static
just to initialize and fill it with strings. 我使用static
来初始化并用字符串填充它。 Or should i just fill it in constructor if it can't be initialized like we do regular arrays. 或者我应该在构造函数中填充它,如果它不像我们常规数组那样初始化。
Sort of: 有点:
class some_class {
static std::vector<std::string> v; // declaration
};
const char *vinit[] = {"one", "two", "three"};
std::vector<std::string> some_class::v(vinit, end(vinit)); // definition
end
is just so I don't have to write vinit+3
and keep it up to date if the length changes later. end
就是这样我不必写vinit+3
并且如果长度稍后改变则保持最新。 Define it as: 将其定义为:
template<typename T, size_t N>
T * end(T (&ra)[N]) {
return ra + N;
}
If you are using cpp11 (enable with the -std=c++0x
flag if needed), then you can simply initialize the vector like this: 如果你正在使用cpp11(如果需要,启用-std=c++0x
标志),那么你可以简单地初始化这样的向量:
// static std::vector<std::string> v;
v = {"haha", "hehe"};
It is 2017, but this thread is top in my search engine, today the following methods are preferred (initializer lists) 这是2017年,但是这个帖子在我的搜索引擎中排名第一,今天首选以下方法(初始化列表)
std::vector<std::string> v = { "xyzzy", "plugh", "abracadabra" };
std::vector<std::string> v({ "xyzzy", "plugh", "abracadabra" });
std::vector<std::string> v{ "xyzzy", "plugh", "abracadabra" };
From https://en.wikipedia.org/wiki/C%2B%2B11#Initializer_lists 来自https://en.wikipedia.org/wiki/C%2B%2B11#Initializer_lists
const char* args[] = {"01", "02", "03", "04"};
std::vector<std::string> v(args, args + 4);
And in C++0x, you can take advantage of std::initializer_list<>
: 在C ++ 0x中,您可以利用std::initializer_list<>
:
http://en.wikipedia.org/wiki/C%2B%2B0x#Initializer_lists http://en.wikipedia.org/wiki/C%2B%2B0x#Initializer_lists
MSVC 2010 solution, since it doesn't support std::initializer_list<>
for vectors but it does support std::end
MSVC 2010解决方案,因为它不支持向量的std::initializer_list<>
但它确实支持std::end
const char *args[] = {"hello", "world!"};
std::vector<std::string> v(args, std::end(args));
same as @Moo-Juice: 和@ Moo-Juice一样:
const char* args[] = {"01", "02", "03", "04"};
std::vector<std::string> v(args, args + sizeof(args)/sizeof(args[0])); //get array size
看一下boost::assign
。
In C++0x you will be able to initialize containers just like arrays 在C ++ 0x中,您将能够像数组一样初始化容器
http://www2.research.att.com/~bs/C++0xFAQ.html#init-list http://www2.research.att.com/~bs/C++0xFAQ.html#init-list
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.