std::vector<int> v{1,2,3,4,5};
auto it = find(v.begin(),v.end(),1);
cout << *it << endl;
对所给元素范围求和。第三个参数决定返回类型。
std::vector<int > v{1,1,1};
cout << accumulate(v.begin(),v.end(),0);
std::vector<string> vv{"a","b","c"};
cout << accumulate(vv.begin(),vv.end(),string(""));
vv大小一定 要>= v的大小。否则返回false。
std::vector<int> v{1,2,3},vv{1,2,3,4};
bool res = equal(v.begin(),v.end(),vv.begin());
cout << res << endl;
注意:写入的数量要<=容器大小。也就是不能越界。
//以下是未定义的
std::vector v;
fill_n(v.begin(),10,1);
cout << v[1];
vector<int> v;
auto it = back_inserter(v);//使用back_inserter();
*it = 1;
*it = 2;
*it = 3;
for(auto x:v) cout << x <<"\t";cout << endl;//1 2 3
std::vector<int> vv;
auto it1 = back_inserter(vv);
fill_n(it1,3,1);//在空容器上使用fill_n
for(auto x:vv)cout << x << "\t";//1 1 1
cout << endl;
deque<int> v;
auto it = front_inserter(v);//使用back_inserter();
*it = 1;
*it = 2;
*it = 3;
for(auto x:v) cout << x <<"\t";cout << endl;//3 2 1
std::vector<int> v{1,2,3};
auto it = inserter(v,v.begin()+2);
it = 11;it = 22;it = 33;//始终在v[2]前面插
for(auto x : v)cout << x << "\t";//1 2 11 22 33 3
vector<int>v1{1,2,3},v2(3);
auto it = copy(v1.begin(),v1.end(),v2.begin() ); //返回赋值完的尾后元素。
for(auto x:v2)cout << x << endl;//1 ,2 ,3
replace(v1.begin(),v1.end(),1,11);
for(auto x:v1)cout << x << endl;//11 2 3
std::vector<int> v3;
replace_copy(v1.begin(),v1.end(),back_inserter(v3),2,22);
for(auto x:v3)cout << x << endl;//11 22 3
std::vector<int> v{1,2,3,1,2,3,2,3};
sort(v.begin(),v.end());
auto it = unique(v.begin(),v.end());
for(auto x:v)cout << x;
cout << endl;
v.erase(it,v.end());
for(auto x:v)cout << x;
using namespace std::placeholders;//必须加上
bool check(string a,int sz){
return a.size() == sz;
}
int main()
{
auto check2 = bind(check,_1,3);
cout << check2("aaa")<<endl;//1
cout << check2("aa")<<endl;//0
auto check3 = bind(check,_2,_1);
cout << check3(3,"aaa");//1
cout << check3(3,"aa");//0
return 0;
}
用base方法将一个反向迭代器 转化为 普通迭代器。
std::vector<int> v{1,2,3,4};
auto it = v.rbegin()+1;
cout << *it;//3
auto it1 = it.base();
cout << *it1;//4