對於這個例子,我們取map
。stl容器「less」參數如何工作?
我設置地圖對象:map<const char*, int, compare> a
,爲compare
如下:
struct compare : public std::binary_function<const char*, const char*, bool>
{
bool operator() (const char* a, const char* b) {
return strcmp(a, b) < 0;
}
};
有什麼我所做的一切?我是如何超載這個操作員的?那不是一元操作符嗎?
它的工作,但我不知道我真的知道我在這裏寫了什麼。
這是完整的代碼:
#include <set>
#include <map>
#include <string>
#include <iostream>
using namespace std;
struct compare : public std::binary_function<const char*, const char*, bool>
{
bool operator() (const char* a, const char* b) {
return strcmp(a, b) < 0;
}
};
int main() {
map<const char*, int, compare> a;
a["Mike"] = 5;
a["Tre"] = 3;
a["Billie"] = 20;
for(map<const char*, int, compare>::iterator it = a.begin(); it != a.end(); ++it) {
cout << (*it).first << endl;
}
cin.get();
}
從技術上講,你的'operator()'成員函數應該標記爲'const'。 –
那些是'std'容器。 'STL'是啓發'std'容器和算法庫的庫的名稱。 – Yakk