C++集合的嵌套迭代器

C++ Nested Iterators for Sets

本文关键字:迭代器 嵌套 集合 C++      更新时间:2023-10-16

我正在尝试对集合使用嵌套迭代器,如下所示,但给出了一个错误:

错误:与"运算符+"不匹配(操作数类型为"std::_Rb_tree_const_iterator"和"int"( for(auto itj = iti+1; itj != st.end((; itj++({

int alternate(string s) {
set<char> st;
for(char x : s){
st.insert(x);
}
for(auto iti = st.begin(); iti != st.end(); iti++){
//string t = "";
for(auto itj = iti+1; itj != st.end(); itj++){
cout<<*iti<<" "<<*itj<<endl;
}
}
}

std::set的迭代器不满足命名的要求LegacyRandomAccessIterator。它只满足LegacyBidirectionalIterator.

因此iti + 1不是有效的表达式,迭代器没有匹配的运算符+。

要解决您的问题,您可以使用std::next

for (auto iti = st.begin(); iti != st.end(); ++iti){
for (auto itj = std::next(iti); itj != st.end(); ++itj){
cout << *iti << " " << *itj << endl;
}
}

这是一个演示。