unordered_map使用不当或错误?

时间:2014-02-01 16:24:39

标签: c++ iterator unordered-map

嘿伙计们,我立刻需要一些帮助...... 我通常使用c#但必须使用c ++编写代码,因此很快就会通过有用的数据类型和过程 这是代码:

#include<iostream>
#include  <unordered_map>
#include <vector>
#include <string>
using namespace std;

void insertInHashtable(string customerString,unordered_map<string, string> &hashtable )
{
    string customerPurchaseArray, name;
    int i= 0, firstCommaPosition = 0;
    int length = customerString.length();
    while (i<length)
        if (customerString[i] == ',')
        {
            firstCommaPosition = i;
            break;
        }
        else
            i++;
    customerPurchaseArray.assign(customerString, firstCommaPosition + 1, string::npos);
    name.assign(customerString, 0, firstCommaPosition - 1);
    hashtable.insert(name, customerPurchaseArray);
}

int main (int args[])
{
    string value = " error...!!!";
    unordered_map<string, string> hashtable;
    string customerString = "Ayush,p1234,p345,p34,p43,p444";
    insertInHashtable(customerString, hashtable);
    unordered_map<string, string>::iterator got = hashtable.find("Ayush");
    if (got != hashtable.end())
    value = got->second;
    std::cout<<value;
    char ch;
    std::cin>>ch;
}

当我遇到这个问题时... 在这里我试图使用unordered_map<string, string>,但我得到一系列错误,我真的不会像:

错误1错误C2039:'iterator_category':不是'std :: basic_string&lt; _Elem,_Traits,_Ax&gt;'的成员c:\ program files(x86)\ microsoft visual studio 10.0 \ vc \ include \ xutility 373 1 CPPTP

和另外5人...... 因为我一小时前才知道这些功能,我认为它的错误使用或参考调用不是仪式...... 那么有谁知道问题是什么以及如何解决它...任何建议将不胜感激......

1 个答案:

答案 0 :(得分:1)

使用:

hashtable.insert(make_pair(name, customerPurchaseArray));

或者:

hashtable.emplace(name, customerPurchaseArray);

或者:

hashtable[name] = customerPurchaseArray;

请注意,有一点不同:前两个会更改任何现有元素,而最后一个总是无条件地覆盖现有元素。