我可以创建一个数组并像这样初始化它:
int a[] = {10, 20, 30};
我如何创建一个std::vector
并同样优雅地初始化它?
我知道的最好的方法是:
std::vector<int> ints;
ints.push_back(10);
ints.push_back(20);
ints.push_back(30);
有没有更好的办法?
如果您的编译器支持 C++11,您可以简单地执行以下操作:
std::vector<int> v = {1, 2, 3, 4};
这在海湾合作委员会中可用从 4.4 版本开始 http://gcc.gnu.org/projects/cxx0x.html。不幸的是,VC++ 2010 在这方面似乎落后了。
或者,升压分配 http://www.boost.org/doc/libs/1_42_0/libs/assign/doc/index.html库使用非宏魔法来允许以下操作:
#include <boost/assign/list_of.hpp>
...
std::vector<int> v = boost::assign::list_of(1)(2)(3)(4);
Or:
#include <boost/assign/std/vector.hpp>
using namespace boost::assign;
...
std::vector<int> v;
v += 1, 2, 3, 4;
但请记住,这会产生一些开销(基本上,list_of
构造一个std::deque
在引擎盖下)所以对于性能关键的代码你最好按照Yacoby所说的那样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)