使用数组初始化std :: string的向量

Kri*_*ing 5 c++ stl

我希望使用std::strings 数组初始化一个向量.

我有以下解决方案,但想知道是否有更优雅的方式这样做?

std::string str[] = { "one", "two", "three", "four" };
vector< std::string > vec;
vec = vector< std::string >( str, str + ( sizeof ( str ) /  sizeof ( std::string ) ) );
Run Code Online (Sandbox Code Playgroud)

当然,我可以通过定义大小来使其更具可读性,如下所示:

int size =  ( sizeof ( str ) /  sizeof ( std::string ) );
Run Code Online (Sandbox Code Playgroud)

并用以下代码替换向量初始化:

vec = vector< std::string >( str, str + size );
Run Code Online (Sandbox Code Playgroud)

但这仍然感觉有点"不优雅".

Mar*_*k B 4

那么中间步骤是不需要的:

std::string str[] = { "one", "two", "three", "four" };
vector< std::string > vec( str, str + ( sizeof ( str ) /  sizeof ( std::string ) ) );
Run Code Online (Sandbox Code Playgroud)

在 C++11 中,您可以使用初始化列表构造函数将大括号初始化放入构造函数中。