C++泛型算法简要整理

来源:互联网 发布:yum 安装pure ftpd 编辑:程序博客网 时间:2024/06/06 01:31

1、vector ivec;
//返回value出现的次数
count(ivec.begin(),ivec.end(),value);

2、以初值initvalue进行累加
accumulate(ivec.begin(),ivec.end(),initvalue);

3、范围赋值
fill(ivec.begin(),ivec.end,value);
ivec.begin()开始的n个元素赋值
fill_n(ivec.begin(),n,value);

4、find_first_of
string str1(“I am change”);
string str2(“about”);
int k=str1.find_first_of(str2);
在str1中寻找与str2任意元素匹配的元素,找到返回str1中第一个匹配的元素,否则返回str1.end()
ind_first_of(str1.begin(),str1.end(),str2.begin(),str2.end());

5、copy
list ilist(10,2);
vector ivec;此时ivec为空,使用back_inserter或insert创建并插入
copy(ilist.begin(), ilist.end(), back_inserter(ivec));
unique_copy不重复复制

6、replace
等于0的值替换为2
replace(ilist.begin(),ilist.end(), 0 ,2);

7、默认是升序,可以自定义排序方法
vector< myclass > cvect;
bool mycompare(const myclass & m1, const myclass & m2) {
return m1.second < m2.second;
}
sort(cvec.begin(), cvec.end(), mycompare);

8、unique无重复排序,将重复的元素放到后面,返回第一个重复元素的位置end_unique,可配合erase
vector::iterator end_unique = unique(words.begin(), words.end());
words.erase(end_unique, words.end());

7、find_if返回返回符合条件的迭代器,count_if返回符合条件的个数
vector svec;
vector::size_type size=count_if(svec.begin(), svec.end(), count);
bool count(const string &f)
{
return f.size()<6;
}
//找到value返回迭代器
find(svec.begin(), svec.end(), value) ;

8、插入
back_inserter创建使用push_back插入
front_inserter使用front_back
insert指定位置插入
vector ivec;
copy(ilist.begin(), ilist.end(), back_inserter(ivec));

insert(ivec.begin(),n,10);
int[] s = {1,2,3,4};
insert(ivec.begin(),s,s+4);

原创粉丝点击