代码之家  ›  专栏  ›  技术社区  ›  anton_rh

具有大小的向量的类内初始化

  •  1
  • anton_rh  · 技术社区  · 3 年前
    struct Uct
    {
        std::vector<int> vec{10};
    };
    

    上面的代码创建了一个向量,该向量包含值为10的单个元素。但我需要初始化大小为10的向量。就像这样:

    std::vector<int> vec(10);
    

    如何在类内初始化时做到这一点?

    0 回复  |  直到 3 年前
        1
  •  4
  •   Robin Dillen    3 年前

    我认为有两个答案:

    std::vector<int> vec = std::vector<int>(10);
    

    如评论中所述:

    std::vector<int> vec{0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    

    这是不太可取的,因为它的可读性较差,以后也很难调整,但我认为它更快(在c++17之前),因为它没有像注释中所说的那样调用move构造函数。

    话虽如此 Uct(): vec(10){}; 也是一个完全可行的选择,具有相同的属性(我认为)。

        2
  •  1
  •   albator    3 年前

    您可以直接使用

    std::vector vec(10,0),得到一个所有元素都等于0的10元素向量。

    推荐文章