c++ - 如何在作为 map 键的 vector 的 2 个数组中搜索公共(public)元素?

标签 c++ dictionary vector c++11

我有一张 map ,其中包含 vector<int>大小为 3 作为键,字符串作为值。该映射包含大约 2000 个从文件中解析的条目。我需要检查 vector 1 中的每个元素是否存在于 vector 2 中。

int index;
map<vector<int>,string>::iterator i2;

for ( i2=my_map.begin() ; i2 != my_map.end(); i2++)
{
    int id_cnt = (*i2).first.at(0);
    int prev_cnt = (*i2).first.at(1);

    for (index=0; index < my_map.size(); index++)
    {
        if (prev_cnt==id_cnt[index])                     //error
        {
            //code to do something
        }
    }

    cout << "hi" <<endl;
    cout << (*i2).second << endl;
}

我得到的错误是:

"Susbscripted value is not an array, pointer or vector.

我才一个星期就开始研究 C++,但我什么都不懂! :(

编辑:

我有 4 列:

4 6 65 gdsg
6 1 64 sggg
1 2 34 wetw
7 4 25 wtwt
8 5 25 heyq
5 7 23 fheh
2 5 12 fetd

我必须检查第 1 列中的每个数字是否出现在第 2 列中。因此,对于第 1 列的第一个元素:4 出现在第 2 列中。现在我取相应的第 3 列编号 (25 ) 并将其放在第 20 个元素下的 26 个字母的 vector 中。 20th 因为我需要获取对应字符串的最后一个字符(wtwt)。 T 是第 20 个字母。

我必须对第 1 列中的元素执行此过程。

最佳答案

根据您的修改,我建议您将数据结构更改为如下内容:

struct Entry {
  int next;
  int index;
  string text;
};

typedef map<int, Entry> MyMap;

for(MyMap::iterator i = my_map.begin(); i < my_map.end(); ++i) {
  MyMap::iterator next = my_map.find(i->second.next);
  if(next == my_map.end()) {
    // not found!
    break;
  }
}

你的第一列在下一个,你的第三列在索引。第二列是映射键。

关于c++ - 如何在作为 map 键的 vector 的 2 个数组中搜索公共(public)元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12518349/

相关文章:

c++ - 一个函数模板的多个定义

c++ - c++11 中的 constexpr 模板元信息变量

c# - 如何从 SortedDictionary 中获取最大/最小值?

c++ - vector 中 N 个最小值的索引

javascript - 开放层 4 : Changing the draw order of selected features

c++ - std::vector: vec.data() 或 &vec[0]

c++ - CreateProcess只执行一半命令

c++ - 了解移位运算符

java - 构建多重映射的正确方法

python - 如何检查字典值是否包含单词/字符串?