初始化一个vectorstring数组

是否有可能初始化一个向量数组的string。

例如:

static std::vector<std::string> v; //声明为类成员

我用static只是初始化和填充string。 或者我应该只填写它的构造函数,如果它不能像我们做常规数组初始化。

有点:

 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就是这样,我不必写vinit+3并保持它的最新,如果长度后来改变。 将其定义为:

 template<typename T, size_t N> T * end(T (&ra)[N]) { return ra + N; } 

如果你正在使用cpp11(如果需要,使用-std=c++0x标志来启用),那么你可以简单地初始化这样的vector:

 // static std::vector<std::string> v; v = {"haha", "hehe"}; 
  const char* args[] = {"01", "02", "03", "04"}; std::vector<std::string> v(args, args + 4); 

而在C ++ 0x中,你可以利用std::initializer_list<>

http://en.wikipedia.org/wiki/C%2B%2B0x#Initializer_lists

MSVC 2010解决scheme,因为它不支持向量的std::initializer_list<> ,但它支持std::end

 const char *args[] = {"hello", "world!"}; std::vector<std::string> v(args, std::end(args)); 

和@ 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

在C ++ 0x中,你将能够像数组一样初始化容器

http://www2.research.att.com/~bs/C++0xFAQ.html#init-list