通過自定義比較器排序(C 版)

2022-01-23 15:24:50 字數 1754 閱讀 1928

一、方法概述

自定義比較器需要實現介面icomparer

二、示例過程

1、新建乙個product產品類

///

///產品類

/// public

class

product

//////

**

/// public double price

//////

編號

/// public

int num

}

2、新建乙個product物件並賦值

listproducts = new list();

products.add(

new product() );

products.add(

new product() );

products.add(

new product() );

products.add(

new product() );

3、建立比較器

(1) 產品**比較器:

///

///產品**比較器

/// public

class productpricecomparer : icomparer

}

(2) 產品名稱比較器:

///

///產品名稱比較器

/// public

class productnamecomparer : icomparer

}

(3) 產品編號比較器:

///

///產品編號比較器

/// public

class productnumcomparer : icomparer

}

4、列印輸出結果的方法

///

///列印結果

/// ///

public

static

void printresult(listproducts)

,price:,num:");

}console.writeline(

"列印完畢");

console.writeline(

"----------分割線----------------------");

}

5、通過比較器排序並列印出結果

products.sort(new

productnamecomparer());

console.writeline(

"根據名稱排序:");

printresult(products);

products.sort(

newproductnumcomparer());

console.writeline(

"根據編號排序:");

printresult(products);

products.sort(

newproductpricecomparer());

console.writeline(

"根據**排序:");

printresult(products);

6、輸出結果

list 自定義比較器進行排序

今天在研究list集合如何排序,我試過很多,但是都不行,然後看到msdn中的這個比較器排序,自己測試了 no problem.給大家分享一下。型別 t 的預設比較器按如下方式確定。如果型別 t 實現 icomparable泛型介面,則預設比較器為該介面的 compareto t 方法 否則,如果型別...

STL自定義比較器

struct person 自定義的比較器 struct comparebyage sort vec.begin vec.end comparebyage 排序傳入我們自定義的比較器map內部的實現使用的是樹,不能夠直接排序,我們可以將其放在乙個vector中,然後自定義乙個比較器去排序 map m...

STL 自定義比較器

說明 採用sort函式舉例 sort函式能夠接收2個形參 stl中的絕大多數用於查詢 排序的函式的前2個引數基本上都是乙個範圍 first,last 第3個引數一般是乙個比較器仿函式 即 設定大小比較原則compare 下面介紹5種常見的比較器定義手段 自定義普通比較器函式cmp include i...