使用数组,您可以执行此操作:
int a[] = { 1,2,3,4,5,6 }
Run Code Online (Sandbox Code Playgroud)
你是如何用矢量做到的?
如果您使用的是Boost,您只需使用Boost.Assign即可
std::vector<int> v = boost::assign::list_of(1)(2)(3)(4)(5)(6);
Run Code Online (Sandbox Code Playgroud)
要么
如果您不使用Boost,可以分两步完成:
static const int a[] = {1,2,3,4,5,6};
vector<int> v (a, a + sizeof(a) / sizeof(a[0]) );
Run Code Online (Sandbox Code Playgroud)
你可以写这个,虽然它不是初始化,但看起来非常吸引人:
std::vector<int> v;
v << 1,2,3,4,5,6,7,8,9,10; //all pushed into the vector!
Run Code Online (Sandbox Code Playgroud)
要支持此语法,您需要将两个实用程序运算符定义为:
template<typename T>
std::vector<T>& operator << (std::vector<T>& v, const T & item)
{
v.push_back(item); return v;
}
template<typename T>
std::vector<T>& operator,(std::vector<T>& v, const T & item)
{
v.push_back(item); return v;
}
Run Code Online (Sandbox Code Playgroud)
而且你已经完成了!
测试代码:
int main() {
std::vector<int> v;
v << 1,2,3,4,5,6,7,8,9,10;
for ( size_t i = 0 ; i < v.size() ; ++i )
std::cout << v[i] << " ";
}
Run Code Online (Sandbox Code Playgroud)
输出:
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
在线演示:http://www.ideone.com/1hyR3
使用实用程序操作符,您实际上可以避免临时变量,例如@Als解决方案中的临时变量,并且您可以在不增加的情况下编写它!