C++標準ライブラリ---advance各コンテナに適用
以下、advance()アルゴリズムを異なるコンテナに適用してテストし、advanceはすべての標準コンテナをサポートします.
//STL---advance()
#include<set>
#include<vector>
#include<list>
#include<deque>
#include<map>
#include<algorithm>
#include<iterator>
#include<iostream>
#include<string>
using namespace std;
int main()
{
//vector
vector<int> coll;
for(int i=0;i<10;i++)
{
coll.push_back(i);
}
vector<int>::iterator pos=coll.begin();
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));
cout<<endl;
advance(pos,3);// pos+=n; pos+=0;
cout<<*pos<<endl;
//deque
deque<int> coll1;
for(int i=0;i<10;i++)
{
coll1.push_front(i);
}
deque<int>::iterator pos1=coll1.begin();
copy(coll1.begin(),coll1.end(),ostream_iterator<int>(cout," "));
cout<<endl;
advance(pos1,3);
cout<<*pos1<<endl;// pos1+=n; pos1+=0;
//list
list<int> coll2;
for(int i=1;i<20;i+=2)
{
coll2.push_back(i);
}
list<int>::iterator pos2=coll2.begin();
copy(coll2.begin(),coll2.end(),ostream_iterator<int>(cout," "));
cout<<endl;
advance(pos2,4);
cout<<*pos2<<endl;// pos1+=n; pos1+=0;
set<int> coll3;
for(int i=1;i<=20;i+=2)
{
coll3.insert(i);
}
//set
set<int>::iterator pos3=coll3.begin();
copy(coll3.begin(),coll3.end(),ostream_iterator<int>(cout," "));
cout<<endl;
advance(pos3,5);
cout<<*pos3<<endl;// pos1+=n; pos1+=0;
//map
map<string,float> coll4;
coll4["BASF"]=369.50;
coll4["VW"]=413.50;
coll4["Daimler"]=819.00;
coll4["BMW"]=834.00;
coll4["Siemens"]=842.20;
map<string,float>::iterator pos4;
for(pos4=coll4.begin();pos4!=coll4.end();++pos4)
{
cout<<"stock: "<<pos4->first<<"\t"
<<"price: "<<pos4->second<<endl;
}
cout<<endl;
map<string,float>::iterator pos5=coll4.begin();
advance(pos5,4);
cout<<pos5->first<<"\t"<<pos5->second<<endl;
system("pause");
return 0;
}