今天进入了第十章 泛型算法的学习。所谓泛型,就是指其运用范围广,容器和内置数组都可以使用。其被包括在<algorithm>中,<numeric>也有部分。算法不依赖于容器,但依赖于元素的操作。算法的真正对象是迭代器,不会改变容器大小。
只读算法:
accumulate(b,e,sum);(+)
find(b,e,val);
equal(r1.b,r1.e,r2.b);(==)(注意所有以一个迭代器指代第二个容器的必须保证第二个容器大小不小于第一个)。
写容器算法:
find(b,e,val);
find_n(b,size,val);
back_inserter(容器)作为特殊的插入迭代器,可以使末尾的元素增加或改变,防止泛型算法超出范围。
e.g.
fill_n(back_insert(ivec),10,0);
copy(b,e,r2);将从b和e开始的所有元素拷贝给r2,必须保证r2.size()>=e-b;
replace(b,e,val1,val2);将所有为val1的地方换成val2.
重排元素算法:
sort(b,e);
unique(b,e);unique仅仅将相同的元素放到末尾,并给一个未知值所以需要用以下操作删除。
auto end_unique=unique(b,e);
w.erase(end_unique,w.end());