我想像数组一样初始化向量。
例
int vv[2] = {12, 43}; 但是当我这样做的时候
vector v(2) = {34, 23}; 要么
vector v(2); v = {0, 9}; 它给出了一个错误:
'{'令牌之前的预期主要表达式
和
错误:预期为','或';' 在“ =”令牌之前
分别。
使用新的C ++标准(可能需要在编译器上启用特殊标志),您可以轻松执行以下操作:
std::vector v { 34,23 }; // or // std::vector v = { 34,23 }; 甚至:
std::vector v(2); v = { 34,23 }; 在不支持此功能的编译器(初始化程序列表)上,您可以使用数组进行仿真:
int vv[2] = { 12,43 }; std::vector v(&vv[0], &vv[0]+2); 或者,对于分配给现有向量的情况:
int vv[2] = { 12,43 }; v.assign(&vv[0], &vv[0]+2); 就像James Kanze建议的那样,拥有可以为您提供数组开头和结尾的函数的功能更强大:
template <typename T, size_t N> T* begin(T(&arr)[N]) { return &arr[0]; } template <typename T, size_t N> T* end(T(&arr)[N]) { return &arr[0]+N; } 然后您可以执行此操作,而不必重复整个尺寸:
int vv[] = { 12,43 }; std::vector v(begin(vv), end(vv)); 问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。