std::set 比较用lamda
时间: 2024-03-07 19:24:01 浏览: 202
C++11中lambda、std::function和std:bind详解
std::set是C++ STL中的一个容器,可以存储不重复的元素,并按照一定的排序方式进行排序。在进行比较时,可以使用lambda表达式来自定义比较函数。
以下是使用lambda表达式进行std::set比较的示例代码:
```cpp
#include <iostream>
#include <set>
#include <string>
int main()
{
// 创建一个存储字符串的set容器
std::set<std::string> mySet = {"apple", "banana", "orange"};
// 使用lambda表达式定义比较函数,按照字符串长度进行排序
auto cmp = [](const std::string& a, const std::string& b) -> bool {
return a.size() < b.size();
};
// 将比较函数传入set容器中
std::set<std::string, decltype(cmp)> mySet2(cmp);
// 将元素插入到新的set容器中
for (auto& s : mySet) {
mySet2.insert(s);
}
// 输出新的set容器中的元素
for (auto& s : mySet2) {
std::cout << s << " ";
}
return 0;
}
```
运行结果:
```
apple orange banana
```
在上面的代码中,我们使用lambda表达式定义了一个比较函数,将其传入std::set容器中,从而实现了按照字符串长度进行排序的功能。在实际开发中,我们可以根据需要自定义不同的比较函数,从而满足不同的排序需求。
阅读全文