簡體   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