如何使用键递增但值相同的值初始化std :: map <int,int =“”>?

时间:2019-03-17 14:48:14

标签: c++

如何初始化映射,使键为0到10,但每个值都设置为某个int,例如100?

m[0] = 100;
m[1] = 100;
m[2] = 100;
...

2 个答案:

答案 0 :(得分:1)

听起来您真的想要一个向量,您可以将其初始化为默认值,例如

std::vector<int> m(10, 100);

如果您真的想使用地图,则可以使用旧的for循环,例如

std::map<int, int> m;
for (int i=0; i<10; ++i){
  m[i] = 100;
}

答案 1 :(得分:1)

std::map没有提供这样的constructor,但是如果您经常这样做以至于需要一种快速的方法,那么带有(for)循环的简单模板函数就足够了:

#include <iostream>
#include <map>


template <class T, class Y>
std::map<T, Y> get_map(T size, Y val)
{
  std::map<T, Y> m;
  for (T i = 0; i != size; ++i)
    m[i] = val;
  return m;
}

int main()
{
  auto m = get_map(10, 100);

  for (const auto& e : m)
    std::cout << e.first << " - " << e.second << '\n';
  std::cout << std::flush;
  return 0;
}

输出:

0 - 100
1 - 100
2 - 100
3 - 100
4 - 100
5 - 100
6 - 100
7 - 100
8 - 100
9 - 100