stl set, multiset
#include<iostream> #include<string> #include<set> using namespace std; int main() { set<string> strset; set<string>::iterator iter; strset.insert("apple"); strset.insert("orange"); strset.insert("grapes"); strset.insert("grapes"); for(iter=strset.begin();iter!=strset.end();iter++) { cout<<*iter<<endl; } }
set 是binary search tree.
find
count
lower_bound
upper_bound
equal_range
set的元素最好不要修改:
std::set<int>,插入1、3、5、7,现在这个含四个元素的set<int>已经根据大小顺序排好了; 然后你通过set<int>::iterator得到了3这个元素的iter,却执行*(int*)&*iter = 9,修改了其中的元素,于是排列大小顺序被改变,你说会怎么样呢? 删除元素当然不是问题。 |
// erasing from multiset #include <iostream> #include <set> int main () { std::multiset<int> mymultiset; std::multiset<int>::iterator it; // insert some values: mymultiset.insert (40); // 40 for (int i=1; i<7; i++) mymultiset.insert(i*10); // 10 20 30 40 40 50 60 it=mymultiset.begin(); it++; // ^ mymultiset.erase (it); // 10 30 40 40 50 60 mymultiset.erase (40); // 10 30 50 60 it=mymultiset.find (50); mymultiset.erase ( it, mymultiset.end() ); // 10 30 std::cout << "mymultiset contains:"; for (it=mymultiset.begin(); it!=mymultiset.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; return 0; }