繁体   English   中英

具有自定义值类型的std :: unordered_map,运算符[]

[英]std::unordered_map with custom value type, operator[]

我正在尝试使用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;
}

但是, m["t"] = rec给出错误no matching function for call to 'CSVRecord::CSVRecord()'

我改用了m.insert(pair<string, CSVRecord>("t",rec)) ,但是我不知道为什么原始的行不通。

由于CSVRecord中缺少默认构造函数,因此出现此错误。

operator[]如何工作?

operator[]搜索提供给它的键,如果map中已经有元素,它将返回对该元素的引用。 如果元素不存在,那么它将添加具有默认构造对象的键。 在您的情况下,它找不到合适的构造函数,因此发出了错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM