我创建了一组C字符串,提供我自己的比较器函数,因为我希望它只考虑前三个字符.这是它的定义:
struct set_object {
bool operator()(const char* first, const char* second) {
return strncmp(first, second, 3) > 0;
}
};
std::set<const char*, set_object> c_string_set;
Run Code Online (Sandbox Code Playgroud)
它按我想要的方式工作,在我按照我在set_object类中概述的方式添加它们时对字符串进行排序.但是当我尝试添加一个比较等于已经添加的字符串的字符串时,有趣的部分开始了.例如,如果我在集合中已经存在"aaa"时尝试添加"aaab",则不会将其添加到集合中.如果我先添加"aaab",然后尝试添加"aaa",它只列出"aaab".但是如果我只提供了一个函数,当其中一个字符串更大时返回true,它怎么知道它们何时相等?它应该返回false时,它要么等于或小!
澄清一下,这不是问题,只是想弄清楚C++是如何工作的.
| 归档时间: |
|
| 查看次数: |
1013 次 |
| 最近记录: |