在C ++中初始化一对数组

时间:2014-11-07 22:31:00

标签: c++ compiler-errors stl

我想以下列方式初始化一对数组:

pair<int, int> adjs[4] = {{current_node.first-1, current_node.second}, {current_node.first+1, current_node.second}, {current_node.first, current_node.second-1}, {current_node.first, current_node.second+1}};

但是我的编译器Code :: Blocks 12.1继续抛出错误:

brace-enclosed initializer used to initialize `std::pair<int, int>'|

之前我曾在网上编译器上使用过这种方法,但它确实有效。那么编译器的问题还是我的代码中的一些语法问题? 我不想一个一个地初始化4对。建议一种方法,我可以摆脱这个错误。

1 个答案:

答案 0 :(得分:15)

这种通用初始化语法是C ++ 11的一个特性,可能你使用的编译器不支持C ++ 11,但在线编译器支持C ++ 11。

您可以这样初始化您的数组:

pair<int, int> adjs[4] = {make_pair(current_node.first-1, current_node.second), ...};

一个实例:http://ideone.com/ggpGX9