如何通过迭代到最大值来填充stl :: map?

0 c++

我有一个std::map,我使用以下方法填充提供的数据类型的最大值.在这种情况下,如果K是,int那么最大值是2,147,483,647.我希望我的地图具有2,147,483,647相同值的键.

以下循环效率非常低.有没有减少时间消耗的方法?

for (auto i = keyBegin; i!=numeric_limits<K>::max(); i++) { 
    m_map[i] = val;
}
Run Code Online (Sandbox Code Playgroud)

MSa*_*ers 5

上面代码的问题是你要插入20亿个数字,都在地图的末尾.但operator[]不知道你会在那里插入一个新项目!

std::map::insert(hint_before, value)是你需要的.你有一个完美的提示 - 所有的值都将直接插入m_map.end()