这里讲的是根据《C++ Primer》第四版中文版的,没有书的朋友可以去网上搜搜,有很多。
在《C++ Primer》P345面有这么一句话:
算法不直接修改容器大小。如果需要添加或删除元素,则必须使用容器操作。
何谓算法?何谓容器操作?
在P336面就讲到:
泛型算法:因为他们实现共同的操作,所以称之为“算法”;
而“泛型”指的是它们可以操作在多种类型上------不但可作用于vector 或 list 这些标准库类型,还可作用于内置数组类型,甚至其它类型的序列上。
在P338面下方:
算法永不执行容器提供的操作。
算法是基于迭代器及其操作实现的,而并非基于容器操作。
使用“普通”的迭代器时,算法从不修改基础容器的大小。
标准库提供一种特殊的迭代器:插入器。插入器可以在基础容器上执行插入运算。
现在看P344面“1.去除重复”的代码:
分析:sort和unique是算法,而erase是容器操作。
细心的人可能发现了算法与容器操作的不同使用方式。
由此根据个人理解总结:
1.算法不是基于容器的,故不能用成员选择操作符“.”;
2.容器操作是基于容器的,因为容器是类,而容器操作即是容器的成员函数,故要用成员函数选择操作符指明是属于哪个容器。
以上纯属个人的一点拙见,也许很多地方表达的不标准,希望大家能理解就好。
因为自己在学的时候分不清算法与容器操作始终弄不清楚,总感觉都是个函数,没什么区别。直到看第二遍时当看到上面那个例子时才有了点清晰的认识,故写出来与大家一同分享。
2010-3-10 18:34:52
C++奋斗乐园①群(已满):19333724
C++奋斗乐园②群:23840480
我们的论坛(刚建立。。。) www.cppleyuan.com