#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人...... 因为我一小时前才知道这些功能,我认为它的错误使用或参考调用不是仪式...... 那么有谁知道问题是什么以及如何解决它...任何建议将不胜感激......
答案 0 :(得分:1)
使用:
hashtable.insert(make_pair(name, customerPurchaseArray));
或者:
hashtable.emplace(name, customerPurchaseArray);
或者:
hashtable[name] = customerPurchaseArray;
请注意,有一点不同:前两个不会更改任何现有元素,而最后一个总是无条件地覆盖现有元素。