c++ - 转换矢量>> 转为矢量>>
问题描述
我有一个 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;
}
如果您有任何想法,我将不胜感激。谢谢
解决方案
这些方面的东西(未经测试):
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);
}
}
推荐阅读
- c# - 在 SSAS 表格 2017 中管理 TablePermissions 和 ColumnPermissions
- java - 地图上多个标记的实时动画
- java - 如何在创建期间调试 apache.jena.queryExecutionFactory 的 NullPointerException?
- javascript - 如何等待包含异步函数调用的 forEach 完成
- javascript - 比较运算符 false
- android - 带导航栏的键盘向上移动 framelayout
- mysql - MySQL SELECT JSON 数组中的所有 id 和子 id
- c - 枚举长度的数组大小会导致编译错误
- vue.js - VueJS在新页面中编辑表格中的数据
- python - 如何在熊猫中指定确切的列数