有人可以在 C++ 中解释 { } 容器吗

sta*_*ark 5 c++ containers stl set min

有人可以解释 C++ 中的 {}。它与所有容器一起使用。例子。

我通常使用它来制作像 set 或 vector 这样的容器为空。

我在将 min/max 函数用于多个值时感到困惑。

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.
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 6

有一个过载std::min需要一个std::initializer_list. 正是这种重载用于

int b = min({1,2,3,4,5});
Run Code Online (Sandbox Code Playgroud)

要获得通用可迭代容器的最小元素,您需要使用std::min_element

int a = std::min_element(begin(v), end(v));
Run Code Online (Sandbox Code Playgroud)

对于最大值使用std::maxstd::max_element,如适用。


son*_*yao 4

std::min都有std::max一个重载 take std::initializer_list,它可以从 braced-init-list 构造,如{1,2,3,4,5}

min(v)不起作用,因为没有超载std::vector

由于 C++11 STL 容器喜欢std::vector并且也std::list可以从花括号初始化列表进行列表初始化;当从空的(即)初始化时,{}它们将由默认构造函数进行值初始化。对于非空的braced-init-list,它们将由重载的构造函数进行初始化std::initializer_list