开发者社区> 问答> 正文

如何在C ++中初始化向量

我想像数组一样初始化向量。

int vv[2] = {12, 43}; 但是当我这样做的时候

vector v(2) = {34, 23}; 要么

vector v(2); v = {0, 9}; 它给出了一个错误:

'{'令牌之前的预期主要表达式

错误:预期为','或';' 在“ =”令牌之前

分别。

展开
收起
保持可爱mmm 2020-01-16 17:02:34 319 0
1 条回答
写回答
取消 提交回答
  • 使用新的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

    2020-01-16 17:02:45
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载