[英]Accessing pair-vector to return using iterator
我的任务是重载[]
运算符,并使用girl[index] = partner
将内容写入对向量:
class Dancers {
unsigned long & operator [] (int i);
vector<pair<int,string>> m_dancers;
};
unsigned long & operator [] (int i) {
auto iter = lower_bound(m_dancers.first.begin(), m_dancers.first.end(), i, cmpInt);
m_dancers.first.insert(iter, i);
//what now?
}
int main() {
Pairs girl;
girl[0] = "Richard";
return 0;
}
因此,我设法对这些女孩进行了排序,现在我有一个要分配给其伴侣的女孩。 据我了解,现在是时候返回参考,以便我可以指定合作伙伴了。 如何使用迭代器做到这一点?
而且更重要的是:在a[x] = y
情况下,有没有更有效的方法将x
和y
分配给对向量? 还是我想重新发明轮子?
想必你不想插入一个新的元素,如果已经有在地图中现有的密钥(即你想要一个unqiue关键词表,而不是一个多键映射)。 因此,您需要检查密钥并仅有条件地插入。 您想返回映射的元素,而不是它们的键。
string & operator[](int key) {
auto it = lower_bound(m_dancers.begin(), m_dancers.end(), key, cmpInt);
if (it->first != key)
it = m_dancers.insert(it, make_pair(i, string()));
return it->second;
}
如果要使用多键映射,则只需省略条件检查并无条件地插入即可。 (但是然后您可能希望使用upper_bound
以便在等距范围的末尾添加新元素,也请参见此处 。)
总而言之,需要在代码中修复的问题:
Dancers girl;
string & Dancers::operator[](int i)
...(或只是内联定义)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.