list是一个双向链表

例程

#include<stdexcept>
#include<memory.h>
#include<string>
#include<cstdlib>//abort()
#include<stdio.h>
#include<algorithm>//find()
#include<iostream>
#include<ctime>
#include<list>
using namespace std; long get_a_target_long()
{
long target = 0;
cout<<"target(0~"<<RAND_MAX<<"):";
cin>>target;
return target;
}
string get_a_target_string()
{
long target = 0;
char buf[10];
cout<<"target(0~"<<RAND_MAX<<"):";
cin>>target;
snprintf(buf, 10, "%d", target);
return string(buf);
}
int compareLongs(const void* a, const void* b)
{
return (*(long*)a - *(long*)b);
} int compareStrings(const void *a, const void *b)
{
if(*(string*)a > *(string*)b)
return 1;
else if(*(string*)a < *(string*)b)
return -1;
else
return 0;
}
void test_list(long& value)
{
cout << "\ntest_list().......... \n"; list<string> c; //链表中存储着string类型(字符串)的数据
char buf[10]; clock_t timeStart = clock();
for(long i=0; i< value; ++i)
{
try//由于例程中的value使用一百万,所以为了防止内存不足出错,这里使用了try catch来尝试捕捉并处理错误,关于try和catch得用法可以查看这个博客
{
snprintf(buf, 10, "%d", rand());
c.push_back(string(buf));
}
catch(exception& p)
{
cout << "i=" << i << " " << p.what() << endl;
abort();
}
}
cout << "milli-seconds : " << (clock()-timeStart) << endl;
cout << "list.size()= " << c.size() << endl;  //list含有的元素个数
cout << "list.max_size()= " << c.max_size() << endl; //这里的max_size函数在不同计算机上的表现不同,具体大小和预装内存大小正相关
cout << "list.front()= " << c.front() << endl; //链表头
cout << "list.back()= " << c.back() << endl; //链表尾 string target = get_a_target_string();
timeStart = clock();
auto pItem = ::find(c.begin(), c.end(), target); //::的意思是让编译器在stdio.h/iostream中寻找find方法,而不用现在当前代码中寻找
cout << "std::find(), milli-seconds : " << (clock()-timeStart) << endl; if (pItem != c.end())
cout << "found, " << *pItem << endl;
else
cout << "not found! " << endl; timeStart = clock();
c.sort();
cout << "c.sort(), milli-seconds : " << (clock()-timeStart) << endl;
}
int main()
{
long int value;
     cout<<"how many elements:";
     cin>>value;
test_list(value);
return 0;
}

运行效果

没找到

找到了

这里有个需要注意的地方,如果一个模板类有自己的排序方法时,尽量使用自己的排序方法,这一定比通用的排序方式快。

最新文章

  1. JQuery初体验
  2. HDU 1010 Tempter of the Bone
  3. 让你的APK瘦成一道闪电
  4. [题解+总结]NOI2015
  5. [MFC] 如何更改MFC程序图标
  6. (转)Android中的Shape使用总结
  7. DataRow[] 转为数组
  8. Prevent Adding Component More than once
  9. 初学tornado之MVC版helloworld
  10. USB方向
  11. POJ 3294 Life Forms(后缀数组+二分答案)
  12. Hibernate4 : 持久化你的第一个类
  13. 2014在百度之星程序设计大赛 - 资格 第四个问题 Labyrinth
  14. 关于C++中的重定位
  15. Docker(开课吧笔记)
  16. 企业QQ客服的添加
  17. K:Union-Find(并查集)算法
  18. 【完整的App项目】颖火虫笔记v2
  19. cocos2d-x 开发常见问题:
  20. Python You-Get (送你一个免广告的视频和音乐网站 VIP)

热门文章

  1. MapReduce Service更换集群外部时钟源,仅需10步
  2. Centos6.8 yum报错及修复YumRepo Error: All mirror URLs are not using ftp, http[s] or file. Eg. Invalid
  3. k8s 测试环境搭建
  4. FZU ICPC 2020 寒假训练 3
  5. R数据分析:纵向数据如何做中介,交叉滞后中介模型介绍
  6. C# 复制目录及其下文件
  7. 使用json.net实现复杂对象转换为QueryString
  8. [bzoj1232]安慰奶牛
  9. 第一个vue程序
  10. vue局部过滤器和全局过滤器