哈希表,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