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。
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。