有人可以用 C++ 解释 { } 容器吗
Can someone explain { } container in c++
谁能解释一下 C++ 中的 {}。
它用于所有容器。
例如。
我通常用它来使像 set 或 vector 这样的容器为空。
我对使用多个值的最小/最大函数感到困惑。
vector<int> v = {1,2,3,4,5};
int a = min(v) // doesn't work.
int b = min({1,2,3,4,5}) // works and gives accurate answer.
std::min
和 std::max
都有一个重载 std::initializer_list
,它可以像 {1,2,3,4,5}
.
这样从 braced-init-list 构造
min(v)
不起作用,因为没有超载 std::vector
.
因为 C++11 STL 容器像 std::vector
和 std::list
可以是默认构造函数 list-initialized from braced-init-list too; when being initialized from empty one (i.e. {}
) they would be value-initialized。对于非空的 braced-init-list,它们将由采用 std::initializer_list
.
的重载构造函数初始化
std::min
that takes an std::initializer_list
过载。正是这个重载用于
int b = min({1,2,3,4,5});
要获取通用可迭代容器的最小元素,您需要使用 std::min_element
:
int a = std::min_element(begin(v), end(v));
对于最大值,请视情况使用 std::max
或 std::max_element
。
谁能解释一下 C++ 中的 {}。 它用于所有容器。 例如。
我通常用它来使像 set 或 vector 这样的容器为空。
我对使用多个值的最小/最大函数感到困惑。
vector<int> v = {1,2,3,4,5};
int a = min(v) // doesn't work.
int b = min({1,2,3,4,5}) // works and gives accurate answer.
std::min
和 std::max
都有一个重载 std::initializer_list
,它可以像 {1,2,3,4,5}
.
min(v)
不起作用,因为没有超载 std::vector
.
因为 C++11 STL 容器像 std::vector
和 std::list
可以是默认构造函数 list-initialized from braced-init-list too; when being initialized from empty one (i.e. {}
) they would be value-initialized。对于非空的 braced-init-list,它们将由采用 std::initializer_list
.
std::min
that takes an std::initializer_list
过载。正是这个重载用于
int b = min({1,2,3,4,5});
要获取通用可迭代容器的最小元素,您需要使用 std::min_element
:
int a = std::min_element(begin(v), end(v));
对于最大值,请视情况使用 std::max
或 std::max_element
。