list排序成员函数对string对象与char*对象排序的差别
对list容器中的对象排序,不能使用sort()算法,只能采用其自身的排序函数sort()。因为,算法sort()只支持随机存取的容器的排序,如vector等。
对基本数据对象list排序:成员函数sort()
情况1:对string排序
#include "stdafx.h"
#include <iostream>
#include <string>
#include <list>
using namespace std;
voidPrintIt(string& str)
{
cout<<str<<endl;
}
int_tmain(int argc, _TCHAR* argv[])
{
list<string>listS;
list<string>::iteratoritS;
listS.push_back("John");
listS.push_back("Bill");
listS.push_back("Tony");
listS.push_back("Fidel");
listS.push_back("Nelson");
listS.push_back("Cali");
cout<<"The unsorted list: "<<endl;
for_each(listS.begin(),listS.end(),PrintIt);
listS.sort();
cout<<"The sorted list: "<<endl;
for_each(listS.begin(),listS.end(),PrintIt);
return 0;
}
执行结果:
情况2:对char*对象排序
但是,下面的情况需要注意:
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <list>
using namespace std;
voidPrintIt(char*& str)
{
cout<<&str<<"\t"<<str<<endl;
}
int_tmain(int argc, _TCHAR* argv[])
{
list<char*> listS;
list<char*>::iterator itS;
listS.push_back("John");
listS.push_back("Bill");
listS.push_back("Tony");
listS.push_back("Fidel");
listS.push_back("Nelson");
listS.push_back("Cali");
cout<<"The unsorted list: "<<endl;
for_each(listS.begin(),listS.end(),PrintIt);
listS.sort();
cout<<"The sorted list: "<<endl;
for_each(listS.begin(),listS.end(),PrintIt);
return 0;
}
执行结果:
注意到:对char*对象排序时,是对指针地址排序的,而不是对内容排序。
list排序成员函数对string对象与char*对象排序的差别的更多相关文章
- 类 this指针 const成员函数 std::string isbn() const {return bookNo;}
转载:http://www.cnblogs.com/little-sjq/p/9fed5450f45316cf35f4b1c17f2f6361.html C++ Primer 第07章 类 7.1.2 ...
- 类的const成员函数,是如何改变const对象的?
我们知道类里面的const的成员函数一般是不允许改变类对象的,但是我们知道const 类型的指针是可以强制类型转出成非const指针的,同样的道理,this指针也可以被强制类型转换 class Y{ ...
- 从成员函数指针生成可调用对象:function<>、mem_fn()和bind()
我们知道,普通函数指针是一个可调用对象,但是成员函数指针不是可调用对象.因此,如果我们想在一个保存string的vector中找到第一个空string,不能这样写: vector<string& ...
- string常用成员函数
string常用成员函数 std::string::clear Clear string Erases the contents of the string, which becomes an emp ...
- c++ 常成员函数 和 常对象
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zhuyingqingfen/article/details/31751111 先明白几个概念: 1. ...
- 为什么const对象只能调用const成员函数,而不能调用非const成员函数?
在c++中,我们可以用const来定义一个const对象,const对象是不可以调用类中的非const成员函数,这是为什么呢?下面是我总结的一些原理. 假设有一个类,名字为test代码如下: clas ...
- C++编译器是如何管理类和对象的,类的成员函数和成员变量
C++中的class从面向对象理论出发,将变量(属性)和函数(方法)集中定义在一起,用于描述现实世界中的类.从计算机的角度,程序依然由数据段(栈区内存)和代码段(代码区内存)构成. #include ...
- 第24课.经典问题解析(1.析构函数的顺序;2.const修饰对象;3.成员函数,成员变量是否属于具体对象)
1.当程序中存在多个对象的时候,如何确定这些对象的析构顺序? 单个对象 单个对象创建时构造函数的调用顺序 a.调用父类的构造函数 b.调用成员变量的构造函数(调用顺序与声明顺序相同) c.调用类自身的 ...
- 类 this指针 const成员函数
C++ Primer 第07章 类 7.1.2 Sales_data类的定义如下: #ifndef SALES_DATA_H #define SALES_DATA_H #include <st ...
随机推荐
- HDU4605---Magic Ball Game(主席树 好题)
题意:一颗二叉树,任意节点要么有两个孩子要么没孩子. 然后有一个球,从结点1开始往子孙结点走. 每碰到一个结点,有三种情况 如果此球重量等于该结点重量,球就停下了 如果此球重量小于该结点重量,则分别往 ...
- LIS 最长单调子序列模板
namespace LIS { template <class T> int lis(vector<T> v) { ; vector<T> d; ;i<v.s ...
- 高级私人定制西服品牌:XUAN PRIVE 为定制而生_乐活_onlylady女人志
高级私人定制西服品牌:XUAN PRIVE 为定制而生_乐活_onlylady女人志 高级私人定制西服品牌:XUAN PRIVE 为定制而生
- ubuntu下,thinkphp验证码不能用
首先安装gd库 使用apt-get方式为Ubuntu安装PHP+MYSQL+Apache 默认是没有GD库的 1.安装gd库 命令:sudo apt-get install php5-gd 2.给权限 ...
- [深入React] 5.MVC
react 是一种典型的MVC框架. 在jquery中,我们都是针对dom编程,由dom事件触发dom改变,MVC三层代码混在一起. 比如点击变颜色 $('#btn').click(function( ...
- Gson 基础教程 —— 自定义类型适配器(TypeAdapter)
1,实现一个类型适配器(TypeAdapter) 自定义类型适配器需要实现两个接口: JsonSerializer<T> JsonDeserializer<T> 和两个方法: ...
- 在Build时使用NuGet自动下载缺失的包
现在使用.net编程,不可避免的总会使用到NuGet去下载引用第三方的dll,而且vs2012也直接默认就会安装上NuGet了.NuGet的确也给我们带来了一些方便,但是也带来了一些问题,比如:一般程 ...
- EditText设置可以编辑和不可编辑状态
1.首先想到在xml中设置android:editable="false",但是如果想在代码中动态设置可编辑状态,没有找到对应的函数 2.然后尝试使用editText.setFoc ...
- LF will be replaced by CRLF问题解决方法
[GIT] warning: LF will be replaced by CRLF问题解决方法 开发环境: 操作系统: windows xp ruby 1.9.2 rails 3.1.3 git v ...
- oracle之时间转换
:取得当前日期是本月的第几周 SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual; TO_CHAR(SYSDATE,'Y ...