Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 创建配对对象c++;_C++ - Fatal编程技术网

C++ 创建配对对象c++;

C++ 创建配对对象c++;,c++,C++,为什么无法按以下方式创建配对对象: pair<int,int> p1 = {0,42} 对p1={0,42} 在C++03中,您应该使用 std::make_pair(0, 42); 因为pair不是简单的数据结构。 或者通过调用对的构造函数,即 std::pair<int, int> p1(0, 42); std::对p1(0,42); 在C++11中 对p1={0,42} 可以。在C++03中不允许使用初始值设定项列表语法,因为std::pair不是聚合,因此

为什么无法按以下方式创建配对对象:

pair<int,int> p1 = {0,42}
对p1={0,42}

在C++03中,您应该使用

std::make_pair(0, 42);
因为pair不是简单的数据结构。 或者通过调用对的构造函数,即

std::pair<int, int> p1(0, 42);
std::对p1(0,42);
在C++11中

对p1={0,42}


可以。

在C++03中不允许使用初始值设定项列表语法,因为
std::pair
不是聚合,因此初始化的有效方法是构造函数调用

从C++标准(C++ 03 8.5.1节1)的形式定义:

聚合是没有声明用户的数组或类(第9条) 构造函数(12.1),没有私有或受保护的非静态数据成员 (第11条),没有基类(第10条),也没有虚函数 (10.3)

请阅读详细解释


在C++11中,由于引入了
std::initializer\u list

为什么您认为这是不可能的?如果您是在Linux下编译,请尝试链接-std=C++11。如果你已经包括分号等,它应该可以正常工作。