运用map,string并于执行期指定排序准则

class RuntimeStringCmp
{
public:
	enum cmp_mode
	{
		normal,
		nocase,
	};

	RuntimeStringCmp(cmp_mode mod=normal):mode(mod)
	{

	}

	~RuntimeStringCmp()
	{

	}

	static bool nocase_compare(char char1,char char2)
	{
		return toupper(char1) < toupper(char2);
	}

	bool operator()(const string& str1, const string& str2)
	{
		if (mode == normal)
		{
			return str1 < str2;
		}
		else
		{
			return lexicographical_compare(str1.begin(), str1.end(), str2.begin(), str2.end(), nocase_compare);
		}
	}

private:
	const cmp_mode mode;
};

void printMap(const map<string, string, RuntimeStringCmp>& mapObj)
{
	typedef map<string, string, RuntimeStringCmp>::const_iterator  mapIter;
	for (mapIter iter = mapObj.begin(); iter != mapObj.end(); iter++)
	{
		cout << iter->first << " " << iter->second << endl;
	}

}

int main()
{
	map<string, string, RuntimeStringCmp> stringMap;

	string tempString1;
	string tempString2;
	while(cin >> tempString1)
	{
		cin >> tempString2;
		stringMap[tempString1] = tempString2;
	}

	printMap(stringMap);
	cin.clear();

	RuntimeStringCmp cmp(RuntimeStringCmp::nocase);
	map<string, string, RuntimeStringCmp> stringMap2(cmp);

	while(cin >> tempString1)
	{
		cin >> tempString2;
		stringMap2[tempString1] = tempString2;
	}
	printMap(stringMap2);

	system("pause");
        return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-20 23:35:57

运用map,string并于执行期指定排序准则的相关文章

c++中在执行期指定排序准则

1 //定义排序准则的仿函数 2 template<class T> 3 class RuntimeCmp 4 { 5 public: 6 enum cmp_mode { _normal, _reverse}; 7 public: 8 RuntimeCmp(cmp_mode m = _normal) : mode(m){} 9 10 bool operator() (const T &t1, const T &t2) const{ return mode == _normal

STL - 容器 - 运行期指定排序准则

RuntimeCmp.hpp #include <set> using namespace std; // type for runtime sorting criterion class RuntimeCmp { public: enum cmp_mode { normal, reverse }; private: cmp_mode mode; public: // constructor for sorting criterion // - default criterion uses v

关于List&lt;Map&lt;String,Object&gt;&gt;集合 的按大小排序

今天写项目,突然遇到了一个问题.程序要求我把一个List<Map<String,Object>>集合按大小排序,卧槽,当时我就懵逼了~        经过研究,功夫不负有心人啊,叼叼哒的我肿么把这个排序搞定了,回头发现,代码也是叼叼哒~醉了醉了~        废话不多说,直接上代码://这是你自己用来接受查询出来的数据的集合. List<Map<String,Object>> listMap1 = new LinkedList<Map<Stri

对List&lt;Map&lt;String,Object&gt;&gt; 进行排序

1 package lltse.base.collectiondemo; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Comparator; 6 import java.util.HashMap; 7 import java.util.List; 8 import java.util.Map; 9 import java.util.Random; 10 11 12 publi

将Map&lt;String, List&lt;Map&lt;String,Object&gt;&gt;&gt;进行排序

首先我贴上我的代码,刚开始我也不知道怎么排序还写了一些方法,最后请教群里的大神解决了 public Map<String, List<Map<String,Object>>> getGrowList(String id){ List<Map<String, Object>> growList = mentDao.getGrowList(id); SortedMap<String, List<Map<String,Object&g

对List&lt;Map&lt;String, Object&gt;&gt;集合排序

private void mySort(List<Map<String, Object>> list) { //list为待排序的集合,按SEQ字段排序 Comparator<Map<String, String>> mapComprator = new Comparator<Map<String, String>>() { @Override public int compare(Map<String, String>

map&lt;String ,String&gt; 自动排序 升序

//TreeMap自动排序 Map<String, String> params = new TreeMap<String, String>( new Comparator<String>() { public int compare(String obj1, String obj2) { // 升序排序 return obj1.compareTo(obj2); } });

将List&lt;Map&lt;String, Object&gt;&gt;排序,升序、降序

import java.net.SocketException; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class Ma

今天学会了对List&lt;Map&lt;String,Object&gt;&gt;的排序

Collections.sort(dyList, new Comparator<Map<String, Object>>() { public int compare(Map<String, Object> arg0, Map<String, Object> arg1) { int map1value=0; int map2value=0; if(arg0.get("getlicenseDate")!=null&&!arg