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

ant*_*_rh 3 c++ in-class-initialization braced-init-list

struct Uct
{
    std::vector<int> vec{10};
};
Run Code Online (Sandbox Code Playgroud)

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

std::vector<int> vec(10);
Run Code Online (Sandbox Code Playgroud)

如何通过类内初始化来做到这一点?

小智 5

我认为有两个答案:

std::vector<int> vec = std::vector<int>(10);
Run Code Online (Sandbox Code Playgroud)

正如评论中所说:

std::vector<int> vec{0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
Run Code Online (Sandbox Code Playgroud)

这是不太可取的,因为它的可读性较差,以后更难调整,但我认为它更快(在 c++17 之前),因为它不会调用注释中所述的移动构造函数。

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