とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

std::multiset, erase, find

STL―標準テンプレートライブラリによるC++プログラミング 第2版

// P164 ex07-03.cpp
#include<string>
#include<algorithm>
template<typename Container>
std::string makeString(const Container& c){
 std::string s;
 std::copy(c.begin(), c.end(), std::inserter(s, s.end()));
 return s;
}
#include<iostream>
#include<set>
#include<algorithm>
#include<cassert>
int main(){
 using std::cout;
 using std::endl;
 using std::string;
 using std::multiset;
 using std::copy;
 using std::inserter;
 cout << "Demonstrating multiset erase functions" << endl;
 const string s("There is no distinctly native American criminal class");
 multiset<char> ms;
 copy(s.begin(), s.end(), inserter(ms, ms.end()));
 assert(makeString(ms) == "       ATaaaaccccdeeeehiiiiiiilllmmnnnnnorrrsssstttvy");
 ms.erase('a');
 assert(makeString(ms) == "       ATccccdeeeehiiiiiiilllmmnnnnnorrrsssstttvy");
 ms.erase(ms.find('e'));
 assert(makeString(ms) == "       ATccccdeeehiiiiiiilllmmnnnnnorrrsssstttvy");
 ms.erase(ms.find('T'), ms.find('v'));
 assert(makeString(ms) == "       Avy");
 cout << " --- Ok." << endl;
}