在我的程序中,有一对声明如下的对:
pair <string, int> mostOftenPairs[10];
例如,当我想要初始化时:
for (short i = 0; i < 10; ++i)
mostOftenPairs[i] = make_pair(std::string(), 0);
CLion强调了一个分配发生的行,当我将鼠标悬停在它上面时,我收到此错误:
'pair::operator=(type)' is deleted
然而,该程序运行没有任何问题,但我的问题是,是否有任何方法用于将值分配给对而不是&#39; =&#39;?是否可以在同一行中初始化对的数组?我的意思是类似于这个:
pair <string, int> mostOftenPairs[10] = make_pair(std::string(), 0);
答案 0 :(得分:4)
是否可以在同一行中初始化对数组?我的意思是类似于这个:
要默认初始化它们,您无需执行任何操作,如std::pair
constructor
1)默认构造函数。 值初始化对中的两个元素,第一个和第二个。
(重点是我的)所以std::pair
的默认构造函数已经初始化(空字符串和0表示int),如果你不需要默认值使用std::vector
:
std::vector<std::pair<std::string,int>> mostOftenPairs( 10, std::make_pair( std::string(), 1 ) );