【发布时间】:2020-02-08 02:46:58
【问题描述】:
以下代码是始终有效还是依赖于编译器/平台?显然,我可以使用 value 构造函数初始化 edges,但我很想知道当 edges 初始化为大小 0 时,复制赋值 operator= 是否在这里工作,然后设置为等于一个带括号的 r 值。
它适用于我的 macbook。
std::vector<std::vector<int>> edges;
edges = {{1,2,3},{4},{5,6}};
【问题讨论】:
-
你在担心什么?
std::vector有一个operator=占用std::initializer_list<T>。 -
@songyuanyao 在 C++ 中,用大括号括起来的事物列表是否总是等同于 std::initializer_list
? -
并非总是如此。传递大括号列表时,将首选采用
std::initializer_list<T>的函数。 -
哦,我明白了。我想我的问题是受到以下事实的启发:我不确定
edges =的右侧是否默认为 std::initializer_list。
标签: c++ c++11 vector variable-assignment initializer-list