删除矢量的第一项

时间:2016-11-17 14:00:26

标签: c++ c++11

这是我的类型:

<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的迭代器重载吗?

2 个答案:

答案 0 :(得分:27)

鉴于

std::vector<Rule>& topPriorityRules;

删除引用向量的第一个元素的正确方法是

topPriorityRules.erase(topPriorityRules.begin());

这正是你的建议。

  

看起来我需要进行迭代器重载。

为了擦除std::vector的第一个元素,不需要重载迭代器。

P.S。如果你打算从前面擦除,矢量(动态数组)可能是错误的数据结构选择。

答案 1 :(得分:9)

两个建议:

  1. 使用std::deque代替std::vector,以便在特定情况下获得更好的效果,并使用方法std::deque::pop_front()
  2. 重新思考(我的意思是:删除)&
  3. 中的std::vector<ScanRule>& topPriorityRules;