>> 转为矢量>>,c++,vector"/>

首页 > 解决方案 > 转换矢量>> 转为矢量>>

问题描述

我有一个 c++ 代码,其中包含格式的向量 v1 集合:vector<map<char,set< int>>>我想将其转换为格式的另一个向量 v2 集合:vector<map<int,set< char>>>

例如:

v1= [{'a', {1,2,3,}}, {'b', {1,2}, {'c', {1,3}}] 

转换为:

v2= [{1, {'a','b','c'}}, {2, {'a','b'}}, {3, {'a','c'}}]

到目前为止,我创建了一个函数来创建第一个向量(随机),但我想将该组向量更改为字符映射和整数组的格式向量。

void get_keylocker(char TxnId, vector<map<char, set<int>>> * v_KeyLocker){
    set<uint64_t> setK;
    map<char, set<int>> mapK;
    int r = 0;
    for (int i=0; i<6; i++)
    {
        r = rand()%(20-10 + 1) + 10;
        setK.insert(r);
    }
    mapK.insert(pair<char, set<int>>(TxnId, setK));
    v_KeyLocker->push_back(mapK);
}

void get_txnLocker(vector<map<char, set<int>>> * v_KeyLocker, vector<map<int, set<char>>> * v_TxnLocker){
    ...
}

int main(){
    vector<map<char, set<int>>> v_KeyLocker;
    vector<map<int, set<char>>> v_TxnLocker;
    for (char r ='a'; j<'g'; j++){
        getkeys(r, &v_KeyLocker);
    }

    get_txnLocker(&v_KeyLocker, &v_TxnLocker);

    return 0;
}

如果您有任何想法,我将不胜感激。谢谢

标签: c++vector

解决方案


这些方面的东西(未经测试):

void get_txnLocker(vector<map<char, set<int>>> * v_KeyLocker,
                   vector<map<int, set<char>>> * v_TxnLocker){
  map<int, set<char>> translated;
  for (const auto& m : *v_KeyLocker) {
    for (const auto& elem : m) {
       for (int key : elem.second()) {
         translated[key].insert(elem.first);
       }
    }
  }

  for (auto& elem : translated) {
    v_TxnLocker->emplace_back();
    v_TxnLocker.back()[elem.first].swap(elem.second);
  }
}

推荐阅读