dim*_*mid 1 c++ stl unordered-map map c++11
我正在尝试使用std :: unordered_map,如此处的示例所示.
class CSVRecord {
public:
CSVRecord(string csvLine) : _fields(vector<string>()) {...}
vector<string> _fields;
};
int main(int argc, char* argv[]) {
unordered_map<string, CSVRecord> m;
CSVRecord rec = CSVRecord("test");
m["t"] = rec;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,m["t"] = rec
给出一个错误:no matching function for call to ‘CSVRecord::CSVRecord()’
.
我使用了m.insert(pair<string, CSVRecord>("t",rec))
,但我想知道为什么原来不起作用.
由于CSVRecord中缺少默认构造函数,您收到此错误.
operator[]
工作怎么样?
operator[]
搜索提供给它的键,如果元素已经存在于map中,则返回对该元素的引用.如果element不存在,那么它将使用默认构造对象添加键.在您的情况下,它无法找到适当的构造函数,因此发出错误.