这是我的类型:
struct Rule
{
int m_id = -1;
std::wstring name;
double angle;
};
Run Code Online (Sandbox Code Playgroud)
该类型的矢量:
std::vector<Rule>& topPriorityRules;
Run Code Online (Sandbox Code Playgroud)
我想删除第一个元素:
topPriorityRules.erase(topPriorityRules.begin());
Run Code Online (Sandbox Code Playgroud)
但不能这样做.看起来我需要做迭代器重载.
任何人都可以为我的结构建议迭代器重载吗?
eer*_*ika 37
特定
std::vector<Rule>& topPriorityRules;
Run Code Online (Sandbox Code Playgroud)
删除引用向量的第一个元素的正确方法是
topPriorityRules.erase(topPriorityRules.begin());
Run Code Online (Sandbox Code Playgroud)
这正是你的建议.
看起来我需要做迭代器重载.
没有必要重载迭代器以擦除第一个元素std::vector.
如果您打算从前面擦除,PS Vector(动态数组)可能是数据结构的错误选择.
VCS*_*SEL 14
两个建议:
std::deque而不是std::vector更好的性能并使用该方法std::deque::pop_front().&instd::vector<ScanRule>& topPriorityRules;