如何使用其中一个键搜索多个键的地图?

时间:2016-01-27 09:55:52

标签: c++ dictionary

我有一个包含两个整数的键的类

class TKey {
  public:
    int iKey1;
    int iKey2;
};

class TData : public TKey {
  public:
    int iData;
};


typedef map<TKey, TData, less <TKey> >    MapData;
typedef MapData::iterator                 ItData;

TMapData mapData;

mapData.push_back(...);
mapData.push_back(...);

现在我想找到iKey1 == 10的项目!

我无法使用

  TKey theKey;
  theKey.iKey1 = 10;
  theKey.iKey2 = void;   // <<<<<

  ItData it = mapData.find(theKey);

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用std::find_if功能执行自定义搜索。

struct check_iKey1
{
  check_iKey1( int iKey1) : iKey1_(iKey1) {}
  bool operator()( const std::pair<int, int>& v ) const 
  { 
    return v.first == iKey1_; 
  }
private:
  int iKey1_;
};


ItData it = std::find_if( mapData.begin(), mapData.end(), check_iKey1(10) );

声明:

用浏览器编写。没编译!取自this answer

答案 1 :(得分:0)

var primary=
{
    "RHID": {
      "type": "numeric"
    },
    "CD_DOC_ID": {
      "type": "numeric"
    },
    "SEQ": {
      "type": "numeric"
    }
}

console.log('RHID' in primary);