哈希表,unorderd_map 迭代器用法
hashtable,unorderd_map iterator usage
我希望熟悉 unorderd_map 的人可以为我的问题提供最佳答案。
我正在尝试使用迭代器访问存储在 unorderd_map 上的值,但遇到以下错误。
error: assignment of data-member ‘mystruct::time_diff’ in read-only structure
以下是我的代码示例:
#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>
using namespace std;
struct mystruct
{
string str_name;
time_t my_last_time;
int time_diff;
};
int main()
{
unordered_map<int,mystruct>hash_table;
//filling my hash table
for(int i=0;i<10;i++)
{
mystruct myst;
myst.str_name="my string";
myst.my_last_time=time(0);
myst.time_diff=0;
hash_table.insert(make_pair(i,myst));
}
//now, i want to access values of my hash_table with iterator.
unordered_map<int,mystruct>::const_iterator itr=hash_table.begin();
for (itr = hash_table.begin(); itr != hash_table.end(); itr++ )
{
time_t now=time(0);//pick current time
itr->second.time_diff=now-itr->second.my_last_time;//here is where my error comes from
}
return 0;
}
所以,编译时报错:
error: assignment of data-member ‘mystruct::time_diff’ in read-only structure
const_iterator
允许您迭代容器的成员而不能修改它们。
如果你想修改它们,你需要使用普通的 iterator
。
我希望熟悉 unorderd_map 的人可以为我的问题提供最佳答案。
我正在尝试使用迭代器访问存储在 unorderd_map 上的值,但遇到以下错误。
error: assignment of data-member ‘mystruct::time_diff’ in read-only structure
以下是我的代码示例:
#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>
using namespace std;
struct mystruct
{
string str_name;
time_t my_last_time;
int time_diff;
};
int main()
{
unordered_map<int,mystruct>hash_table;
//filling my hash table
for(int i=0;i<10;i++)
{
mystruct myst;
myst.str_name="my string";
myst.my_last_time=time(0);
myst.time_diff=0;
hash_table.insert(make_pair(i,myst));
}
//now, i want to access values of my hash_table with iterator.
unordered_map<int,mystruct>::const_iterator itr=hash_table.begin();
for (itr = hash_table.begin(); itr != hash_table.end(); itr++ )
{
time_t now=time(0);//pick current time
itr->second.time_diff=now-itr->second.my_last_time;//here is where my error comes from
}
return 0;
}
所以,编译时报错:
error: assignment of data-member ‘mystruct::time_diff’ in read-only structure
const_iterator
允许您迭代容器的成员而不能修改它们。
如果你想修改它们,你需要使用普通的 iterator
。