是否可以使用n个键初始化std :: map,其中n是预定义的?

cro*_*oss 6 c++ stdmap

我想知道是否可以初始化一个std::mapn键:value元素,其中n是预定义的(类似于数组初始化:) array[n].

我不知道这样的构造函数存在,std::map但我想我可以问以防万一.

或者可以做的是:

#include <iostream>
#include <map>

int main()
{
   int n = 5;
   std::map<int,double> randomMap;

   for(int i = 0; i < n; ++i)
   {
       randomMap.insert({i,0.9});
   }

   for(auto j: randomMap)
   {
       std::cout<<"key: " << j.first <<"\tvalue: " << j.second << std::endl;
   }

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

Cor*_*mer 11

当然,您可以使用初始化列表

int main()
{
    std::map<int, double> randomMap {{0, 1.5}, {3, 2.7}, {9, 1.9}};
    for (auto const& element : randomMap)
    {
        std::cout << "key: " << element.first << " value: " << element.second << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

产量

key: 0 value: 1.5
key: 3 value: 2.7
key: 9 value: 1.9
Run Code Online (Sandbox Code Playgroud)

  • 当然,但是OP已经在使用`auto`了,所以可以假设它们已经在使用带有C++ 11的编译器.这也是2015年,我希望大多数人至少使用C++ 11,或者如果他们不是,他们应该在他们的问题中特别提到它. (4认同)