这是我的类型:
<h1>My First Google Map</h1>
<div id="map" style="width:60%;height:500px"></div>
<div id="output"></div>
</body>
该类型的矢量:
struct Rule
{
int m_id = -1;
std::wstring name;
double angle;
};
我想删除第一个元素:
std::vector<Rule>& topPriorityRules;
但不能这样做。看起来我需要做迭代器重载。
任何人都可以建议我的struct的迭代器重载吗?
答案 0 :(得分:27)
鉴于
std::vector<Rule>& topPriorityRules;
删除引用向量的第一个元素的正确方法是
topPriorityRules.erase(topPriorityRules.begin());
这正是你的建议。
看起来我需要进行迭代器重载。
为了擦除std::vector
的第一个元素,不需要重载迭代器。
P.S。如果你打算从前面擦除,矢量(动态数组)可能是错误的数据结构选择。
答案 1 :(得分:9)
两个建议:
std::deque
代替std::vector
,以便在特定情况下获得更好的效果,并使用方法std::deque::pop_front()
。&
std::vector<ScanRule>& topPriorityRules;
醇>