2017-01-27 52 views
-3

地圖我想要實現的標準::地圖上該搜索下面的函數(findn)找到的元素。但在我的情況下,關鍵是複合值,它是一個<int,int>C++ 11搜索一個std ::複合鍵

如何在這裏使用std::map.find

#include <iostream> 
#include <map> 
#include <utility> 
#include <string> 

using namespace std; 

std::map<std::pair<int, int>, std::string> studentMap; 

int insert(int i, int j, std::string name) { 
     if(!studentMap.insert(std::make_pair (std::make_pair(i,j), name)).second) { 
       std::cout << "game not added" << std::endl; 
     } else { 
       std::cout << "game added" << std::endl; 
     } 
     return 0; 
} 

void findn(int i, int j) { 
// how to find when we have composite key? 
} 

int main() { 
     insert(1,1,"test"); 
     insert(1,1,"tes"); 
     insert(1,2,"test 2"); 

     std::cout << studentMap.size() << std::endl; 
     findn(1,1); 
} 
+3

如果鑰匙*不*一個'的std :: pair',你會怎麼做呢?是什麼讓你覺得在這種情況下會有所不同? –

+0

我只是問正常的查找方法是否適用於組合鍵。 – cateof

+1

只要先嚐試一下就簡單了。 :) –

回答

1

這將做的工作:

auto it = mymap.find(std::make_pair(i,j)); 
+0

如何檢查「it」是否存在? – cateof

+2

'布爾存在=吧= mymap.end'!; [查找](http://en.cppreference.com/w/cpp/container/map/find)如果沒有元素被發現返回結束迭代 –