簡體   English   中英

C ++無序映射

[英]C++ Unordered Map

我有一個程序在其中使用迭代器來訪問映射條目的值。

#include <iostream>
#include <cstdio>
#include <unordered_map>
#include <utility>
#include <algorithm>

using namespace std;

int main()
{
   int a[]={1,2,4,7,9,3,3,55,66,88,11};
   int k = 58;
   unordered_map<int,int> c;
   int i=0;
   for(auto x: a)
   {
       c.insert(make_pair(x,i));
       i++;
   }

   for(auto x: c)
   {
     if(c.count(k-x.first)==1) printf("%d %d\n",x.second,(c.find(k-x))->second);
   }

}

在該行中:

if(c.count(k-x.first)==1) printf("%d %d\n",x.second,(c.find(k-x))->second);

我遇到錯誤,尤其是在c.find()->second 我認為這是從迭代器訪問元素的方式。 怎么了?

你不能說

c.find(k-x)

因為k是一個intx是一個std::pair<int, int> 您是這兩個意思之一嗎?

c.find(k - x.first)

要么

c.find(k - x.second)

附帶說明一下,直接從find取消對返回的迭代器的引用通常是不安全的,因為如果find返回.end() (例如,它沒有找到具有該鍵的元素),那么您就會遇到問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM