#include
#include
#include
#include
using
namespace std;
template
<
typename t >
void
fun(t val)
bool
cmp(string s1, string s2)
//到這一步說明兩個字串前n位相同,比較字串長度
return n1 < n2;
//n1//n2<=n1時交換位置
}int
main()
;//1方法
cout <<
"------------cmp func------------"
<< endl;
sort
(vec.
begin()
, vec.
end(
), cmp)
;for_each
(vec.
begin()
, vec.
end(
), fun);
//2方法
cout <<
"------------operator
<< endl;
sort
(vec.
begin()
, vec.
end(),
(const string& a,
const string& b));
for_each
(vec.
begin()
, vec.
end(
), fun);
//3方法
cout <<
"------------string::compare------------"
<< endl;
sort
(vec.
begin()
, vec.
end(),
(const string& a,
const string& b));
for_each
(vec.
begin()
, vec.
end(
), fun);
return0;
}
測試結果
ps: string類中過載《號內部就是呼叫compare,下面是vs2019中的string原始碼
template
<
class
_elem
,class
_traits
,class
_alloc
>
_nodiscard bool
operator
<
(const basic_string<_elem _traits _alloc>
& _left,
const basic_string<_elem _traits _alloc>
& _right)
noexcept
c 全排列的字典序
背景 7 3 輸出全排列 20 分 請編寫程式輸出前n個正整數的全排列 n 10 並通過9個測試用例 即n從1到9 觀察n逐步增大時程式的執行時間。輸入格式 輸入給出正整數n 10 輸出格式 輸出1到n的全排列。每種排列佔一行,數字間無空格。排列的輸出順序為字典序 輸入樣例 3輸出樣例 123132...
全排列 字典序排列
include includeusing namespace std define dig num 4 void cal int str int first int last cout endl if first last bool get f l int list int former int l...
c 排列和字典序全排列解析
我們知道c 裡自帶的有全排列,對於在演算法或者acm之類的競賽可謂是非常的好用的乙個函式。那麼在學習全排列和組合演算法之前我們先來看一下自帶的函式如何使用。首先,對於全排列c 給出了兩個函式,next permutation 和 prev permutation 顧名思義,next permutai...