【发布时间】:2014-01-21 11:39:48
【问题描述】:
我有一个全局变量:
std::unordered_map<int, std::stack<int>> intTable;
为了补充这一点,我目前这样做:(我已经看到 C++11 初始化列表,但我不确定我是否会遇到这个 Visual C++ 11 2013 错误 --> http://connect.microsoft.com/VisualStudio/feedback/details/807966/initializer-lists-with-nested-dynamically-allocated-objects-causes-memory-leak)
std::stack<int> s;
s.push(10);
那我做
intTable[integerKey] = s;
然后我有时需要添加到堆栈中,并检查它的顶部值,如果它大于一个值,我需要弹出它并从映射中删除键:
intTable[integerKey].push(20);
if (intTable[integerKey].top() >= someIntegerValue)
{
intTable[integerKey].pop();
if (intTable[integerKey]->size() == 0)
{
intTable.erase(integerKey);
}
}
我的问题是有更好的方法吗?例如,我看到的一个低效率是我多次索引到地图中。有可能避免这种情况吗?如何在不复制的情况下存储对 intTable[integerKey] 的引用?
【问题讨论】:
标签: c++ c++11 vector stack unordered-map