您的位置:首页 > 编程语言 > C语言/C++

C++ 容器使用自定义排序逻辑对中英文进行排序

2015-11-27 21:12 344 查看
STL中的容器主要分为顺序容器和关联容器。其中顺序容器主要有vector, deque和list;关联容器主要有map,set和multimap  multiset。关联容器,通过键存储和读取元素。顺序容器,通过元素在容器中的位置顺序存储和读取元素。

指定自定义排序方法或者重载 operator < 操作符等方式来自定义排序规则

对于顺序容器通过调用std::sort函数进行排序,以类对象的方式传递自定义的排序逻辑,如下:
class CompareASC
{
public:
CompareASC()
{
setlocale(LC_ALL,"Chinese-simplified");
}

bool operator ()(const CString& i_stFir, const CString& i_stSec)
{
USES_CONVERSION;
int nResult = strcoll(T2A(sPre), T2A(sLat));
return nResult < 0 ? true : false;
}
};

// 调用方式

std::vector<CString> vectData;

std::sort(vectData.begin(),vectData.end(),CompareASC());

对于关联容器,本身按照键进行排序,定义容器时传递自定义的排序逻辑,如下:

std::map<CString,CString,CompareASC> mapData;


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ stl