本文仅供个人学习,并没有什么阅读价值,请不小心点进来的朋友见谅...
先贴一些代码:
#include<iostream>
#include<vector>
#include<list>
#include<string>
#include<algorithm>
#include<numeric>
#include<iterator>
int main(int argc, char* argv[])
{
std::vector<int> vec1{1,2,5,5,6,5,6};
std::vector<int> vec2{1,2,5,5,6,5,6,7,7};
std::list<std::string> mylist={"aa","aa","a"};
auto it1=find(vec1.cbegin(),vec1.cend(),5);// 查找,返回迭代器
std::cout<<count(mylist.cbegin(),mylist.cend(),"a")<<std::endl;// 统计次数
std::cout<<accumulate(vec1.begin(),vec1.end(),0)<<std::endl;// 累加
std::cout<<accumulate(mylist.cbegin(),mylist.cend(),std::string(""))<<std::endl;// 如果是累加字符串后一个参数要写成这样
if(equal(vec1.begin(),vec1.end(),vec2.begin()))// 比较容器是否相等,第二个容器的大小不小于第一个
std::cout<<"equal!"<<std::endl;
std::vector<double> vec3(5,1);
fill(vec3.begin(),vec3.end(),2);// 全部填充2
//for(auto i : vec3)std::cout<<i<<" ";
fill_n(vec3.begin(),3,6);// 前三个填充成6
//for(auto i : vec3)std::cout<<i<<" ";
//不管是fill还是fill_n,都要保证有足够的空间
//但是使用back_inserter则是直接插入,不是覆盖原来的,没有这种限制
std::vector<float> vec4={1.0,2.0};// empty
auto it2=back_inserter(vec4);
fill_n(it2,2,4.0);// 在后面插入两个4.0
//for(auto i : vec4)std::cout<<i<<" ";
replace(vec4.begin(), vec4.end(), 2.0, 3.8);//将2.0替换成3.8
//for(auto i : vec4)std::cout<<i<<" ";
std::list<std::string> mylist2{"abc","abc","a","a","a","b"};
//mylist2.unique();
unique(mylist2.begin(),mylist2.end());// 算法库里的unique是把重复的放后面,不是真的删除
for(auto i : mylist2)std::cout<<i<<" ";
}