我想以下列方式初始化一对数组:
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对。建议一种方法,我可以摆脱这个错误。
答案 0 :(得分:15)
这种通用初始化语法是C ++ 11的一个特性,可能你使用的编译器不支持C ++ 11,但在线编译器支持C ++ 11。
您可以这样初始化您的数组:
pair<int, int> adjs[4] = {make_pair(current_node.first-1, current_node.second), ...};