首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向量-更优雅?

向量-更优雅?
EN

Stack Overflow用户
提问于 2012-11-08 04:12:03
回答 3查看 106关注 0票数 2

我正在处理向量,我是这样初始化它们的:

代码语言:javascript
复制
vector<int> values;

values.push_back(1);
values.push_back(2);
values.push_back(8);
values.push_back(12);
values.push_back(32);
values.push_back(43);
values.push_back(23);
values.push_back(234);
values.push_back(7);
values.push_back(1);

有没有办法,以一种类似数组的方式对这些元素进行push_back?如下所示:

代码语言:javascript
复制
    int numbers[2] = {1, 2};

向量方法占用了太多的行,IMO!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-08 04:14:05

在C++11中,您可以对任何容器使用大括号初始化。

代码语言:javascript
复制
std::vector <int> v = {1, 2, 8, 12, 32 ...};

在C++03中可以做到这一点

代码语言:javascript
复制
const int arr[] = {1, 2, 8, 12, 32 ... };
const int size = sizeof arr / sizeof arr[0];
std::vector<int> v(arr, arr + size);

或者使用boost assign

代码语言:javascript
复制
#include <boost/assign.hpp>
using namespace boost::assign;
///...
{
    std::vector<int> v;
    v += 1, 2, 8, 12, 32;
}
票数 9
EN

Stack Overflow用户

发布于 2012-11-08 04:13:19

确实有一种方法可以做到这一点,前提是您已经掌握了C++11编译器:

代码语言:javascript
复制
std::vector<int> values = {1, 2, 3, 4, 5};

这被称为初始化器列表。std::vector有一个constructor that takes an initializer list (参见声明7)来初始化它的元素。

票数 4
EN

Stack Overflow用户

发布于 2012-11-08 04:13:46

在C++11中,您可以使用与处理数组相同的方法来完成此操作。std::vector有一个接受std::initializer_list<T>的构造函数,这允许它从列表中初始化自己。

在C++03中,您可以使用临时数组:

代码语言:javascript
复制
int tempValues[] = {1,2,8,12,32,43,23,234,7,1};
std::vector<int> values(tempValues, tempValues + sizeof tempValues / sizeof tempValues[0]);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13277403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档