In-class 向量的大小初始化

In-class initialization of vector with size

struct Uct
{
    std::vector<int> vec{10};
};

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

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

如何使用 in-class 初始化来做到这一点?

我认为有 2 个答案:

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

正如评论中所说:

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

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

也就是说 Uct(): vec(10){}; 也是具有相同属性的完全可行的选择(我认为)。

可以直接使用

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