C:\Program Files\CodeBlocks\MinGW\lib\gcc\x86_64-w64-mingw32\8.1.0\include\c++\bits\predefined_ops.h|143|error: no match for call to '(main()::<lambda(const std::vector<int>&, const std::vector<int>&)>) (std::__cxx11::basic_string<char>&, std::__cxx11::basic_string<char>&)'|
时间: 2023-07-23 17:08:39 浏览: 195
CodeBlocks_C语言_gcc-nm.exe_
这个错误是因为在比较函数的lambda表达式中,参数类型与实际传递的参数类型不匹配。lambda表达式的参数类型应该与`sort()`函数调用时的参数类型一致。
在你的代码中,你将`lines`向量中的每个元素都命名为`line`,并假设每个元素都是一个整数向量。但是,在lambda表达式中,你将参数类型定义为`const vector<int>&`,而实际上传递给该lambda表达式的参数类型是`string&`。
为了解决这个问题,你需要将lambda表达式的参数类型修改为`const string&`,如下所示:
```cpp
sort(lines.begin(), lines.end(), [](const string& a, const string& b) {
return stoi(a) < stoi(b);
});
```
这样,比较函数将按照数值大小对字符串进行比较和排序。
请注意,在这种情况下,你需要确保`lines`向量中的每个元素都可以成功转换为整数。否则,可能会导致运行时错误。
阅读全文