使用带有make_pair方法的赋值运算符会生成CLion警告

时间:2018-05-08 13:48:25

标签: c++ clion

在我的程序中,有一对声明如下的对:

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);

1 个答案:

答案 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 ) );