#include <vector>
#include <string>
#include <iostream>
#include <list>
#include <algorithm>
#include <iterator>
using namespace std;
int main(int argc, char *argv[])
{
std::ostream_iterator<int> ost_iter(cout," ");
list<int> lst1;
for(int i = 0;i<10;++i)
lst1.push_back(i);
list<int> lst2;
for(int i = 0;i<10;++i)
lst2.push_front(i);
merge(lst1.begin(),lst1.end(),lst2.begin(),lst2.end(),ost_iter);
cout<<endl;
return 0;
}
会发现程序编译成功,但是运行出错,原因在于merge算法应用时必须先排序才行,改成下面这样:
。。。省略预编译与using
int main(int argc, char *argv[])
{
std::ostream_iterator<int> ost_iter(cout," ");
list<int> lst1;
for(int i = 0;i<10;++i)
lst1.push_back(i);
list<int> lst2;
for(int i = 0;i<10;++i)
lst2.push_front(i);
std::copy(lst1.begin(),lst1.end(),ost_iter);
cout<<endl;
std::copy(lst2.begin(),lst2.end(),ost_iter);
cout<<endl;
lst1.sort();
std::copy(lst1.begin(),lst1.end(),ost_iter);
cout<<endl;
lst2.sort();
std::copy(lst2.begin(),lst2.end(),ost_iter);
cout<<endl;
merge(lst1.begin(),lst1.end(),lst2.begin(),lst2.end(),ost_iter);
cout<<endl;
return 0;
}
文件成功,但是两个容器0,1,2,3,4,5,6,7,8,9合并,竟然变成0,0,1,1,2,2。。。。。奇怪吧。另外,lst1.sort()可以去掉,因为它已经是排好序的了,换句话说,merge运行正确的前提是排好序,而不是一定要你先运行sort()。另外merge不仅有合并的意思,还有融入的意思,感觉这里更像是融入,而不是简单的合并,即我理解的合并在后面。当然,假如仅仅是加在后面用insert就可以了,没有必要用merge 而且,假如merge像,那样还需要先排序干什么呢?
分享到:
相关推荐
标准库为容器类型定义的操作很少,并没有为每个容器实现更多的操作。因为这部分操作可以抽象出来为所有的容器工作,那...标准库提供了100多个泛型算法,主要定义于头文件中,还有一组泛化的算术算法定义于头文件中。
这些是关于c++ primer的练习题和 测试题 ,自己感觉还不错 大家可以看看
泛型算法.CHM(已经编译的帮助文档),对C++很有帮助,文档小,方便
以下是对C++中的泛型算法进行了总结介绍。需要的朋友可以过来参考下
C++标准库示例
讲义
C++标准模板库STL和泛型编程简介,数觉结构和算法的分离
主要介绍了C++算法与泛型算法(algorithm、numeric),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
C++实验4关联容器、泛型算法.doc
C++ STL 和 泛型编程使用C++标准库STL六大组件容器(Containers)分配器(Allocations)算法(Algorithms)迭代器(Ite
基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....
基于C++1x新标准实现泛型抽象工厂测试实例。用于创建多系列“相关或者相互依赖的对象”。 用户无需指定工厂和产品的具体的类型、无需了解它们的具体实现,从而绕过常规的对象创建方式。
侯捷的STL标准库与泛型编程百度云链接。永久有效。
C++ primer之泛型函数
GP-泛型算法通用原则
C++Primer第11章-泛型算法-课后习题答案[收集].pdf
c++vector容器(#include<vector>
C++中的标准程序库是类库和函数的集合,其使用核心语言写成。标准程序库提供若干泛型容器、函数...标准模板程序库是C++标准程序库的子集,包含容器、算法、迭代器、函数对象等。也有些人使用术语STL代表C++标准程序库。