1. min_element/max_element
找出容器中的最小/最大值:
using namespace std;
int main()
{
vector<int> L;
for (int i=0; i<10; i++)
L.push_back(i);
vector<int>::iterator min_it = min_element(L.begin(),L.end());
vector<int>::iterator max_it = max_element(L.begin(),L.end());
cout << "Min is " << *min_it << endl;
cout << "Max is " << *max_it << endl;
return 1;
}
程序的输出结果为:
Min is 0
Max is 9
2. sort
对容器进行排序:
#include <iostream>
#include <vector>
#include <algorithm>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void Print(vector<int> &L)
{
for (vector<int>::iterator it=L.begin(); it!=L.end();it++)
cout << *it << " ";
cout << endl;
}
int main()
{
vector<int> L;
for (int i=0; i<5; i++)
L.push_back(i);
for (int i=9; i>=5; i--)
L.push_back(i);
Print(L);
sort(L.begin(), L.end());
Print(L);
sort(L.begin(), L.end(), greater<int>()); // 按降序排序
Print(L);
return 0;
}
程序的输出结果为:
0 1 2 3 4 9 8 7 6 5
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1 0
3. copy
在容器间复制元素:
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
// 先初始化两个向量v1 和v2
vector <int> v1, v2;
for (int i=0; i<=5; i++)
v1.push_back(10*i);
for (int i=0; i<=10; i++)
v2.push_back(3*i);
cout << "v1 = ( " ;
for (vector <int>::iterator it=v1.begin(); it!=v1.end();it++)
cout << *it << " ";
cout << ")" << endl;
cout << "v2 = ( " ;
for (vector <int>::iterator it=v2.begin(); it!=v2.end();it++)
cout << *it << " ";
cout << ")" << endl;
// 将v1 的前三个元素复制到v2 的中间
copy(v1.begin(), v1.begin()+3, v2.begin()+4);
cout << "v2 with v1 insert = ( " ;
for (vector <int>::iterator it=v2.begin(); it!=v2.end();it++)
cout << *it << " ";
cout << ")" << endl;
// 在v2 内部进行复制,注意参数2 表示结束位置,结束位置不参与复制
copy(v2.begin()+4, v2.begin()+7, v2.begin()+2);
cout << "v2 with shifted insert = ( " ;
for (vector <int>::iterator it=v2.begin(); it!=v2.end();it++)
cout << *it << " ";
cout << ")" << endl;
return 1;
}
程序的输出结果为:
v1 = ( 0 10 20 30 40 50 )
v2 = ( 0 3 6 9 12 15 18 21 24 27 30 )
v2 with v1 insert = ( 0 3 6 9 0 10 20 21 24 27 30 )
v2 with shifted insert = ( 0 3 0 10 20 10 20 21 24 27 30 )