我正在使用C ++,并且我想使用智能指针作为map中的键。这是我尝试过的。
#include <iostream>
#include <memory>
#include <string>
#include <map>
#include <cstring>
using namespace std;
struct CharPointerComparator {
bool operator()(const unique_ptr<char>& a, const unique_ptr<char>& b) const {
return *a < *b;
}
};
int main() {
map<unique_ptr<char>, int, CharPointerComparator> myMap;
unique_ptr<char> p1 = make_unique<char>('a');
myMap.insert(make_pair(p1, 10));
}
它不起作用。我遇到错误:
/usr/include/c++/8.2.0/bits/stl_pair.h:524:14: error: no matching function for call to ‘std::pair<std::unique_ptr<char>, int>::pair(std::unique_ptr<char>&, int)’
这是怎么了?如何使insert
工作?