这是我一直在考虑的事情。我已经做了一些研究,找不到任何东西,但我还没有发现任何相反的事情。是否有可能使用std :: sort与带额外参数的排序函数?
请考虑<algorithm>
中的std::sort
函数。它需要两个迭代器和一个函数指针作为参数。所以,如果我想按字母顺序排序字符串矢量,我会做这样的事情:
bool ascending(std::string lhs, std::string rhs) { return lhs < rhs; }
std::sort(my_vector.begin(), my_vector.end(), ascending);
的事情是,这种类型的排序功能是区分大小写的,所以才会将一个字符串以小写开头“一'以大写字母'Z'开始的字符串之后。我看到的唯一可见的解决方案是沿着bool ascending_case_insensitive()
的线创建附加功能。不过,如果我可以在排序中使用bool ascending()
函数并附加bool is_case_sensitive
参数,那将会很不错。这可能吗?
这需要绑定函子/ lambda – deviantfan 2014-10-18 20:27:39
C++ 11或C++ 03? – 2014-10-18 20:27:40
11非常好。 – 2014-10-18 20:28:09