在 c++ 中将对插入到映射中
Insert pair into map in c++
我有以下地图结构:
std::map<std::pair<int, char>, int> transitions;
这表示非确定性自动机的转换,每个自动机有 2 个整数和一个字符 I、J 和 C,表示转换的状态,即从状态 i 到状态 J 的转换,字符 C 。
0 0 a
0 1 a
1 1 b
1 2 c
1 3 c
3 4 d
4 4 d
4 5 d
我想插入其中。我能做什么?
我想过做以下事情:
typedef map<pair<int, char>, int> transitions;
for (j=0; j<numberTransitions;j++)
{
cin>> stateOrigin>>stateDestination>>transitionCharacter;
transitions.insert(transitions::value_type(std::make_pair(stateOrigin,transitionCharacter), stateDestination ));
}
我不认为这是这样做的方法,我是使用地图库的新手。
我唯一看错的是你需要一个对象:
transitions.insert(transitions::value_type(std::make_pair(stateOrigin,transitionCharacter), stateDestination ));
^^^^^^^^^^^ is a type
/// Should be
transitions trans;
// Then later in the loop.
trans.insert(transitions::value_type(std::make_pair(stateOrigin,transitionCharacter), stateDestination ));
您甚至可以更进一步,使用key_type而不是成对:
trans.insert(transitions::value_type(transitions::key_type(stateOrigin,transitionCharacter), stateDestination ));
// or
for(/*STUFF*/)
{
typedef transitions::value_type value_type;
typedef transitions::key_type key_type;
trans.insert(value_type(key_type(stateOrigin,transitionCharacter), stateDestination ));
}
相关文章:
- 为什么映射插入和 map.find() 的单次迭代比插入和 map.find() 的两次单独迭代慢得多
- 如何编写用于多映射插入和擦除功能的 API?
- C++,映射插入&&文件流读取导致麻烦
- 多映射插入键类型信息 std::make_pair vs std::p air 构造函数
- 将一个映射插入到同一多重映射的另一个映射中会导致 SEG 错误
- 将元素插入 c++ 映射 - 插入方法的差异
- 使用boost::关联属性映射插入boost::BIMAP..失败
- STL 无序映射 - 插入到向量中
- C++在映射插入期间保证移动
- Visual Studio C++-std::映射插入失败
- C++映射插入
- 标准::映射插入/擦除的并发问题
- 不明确的映射.插入boost
- 无序映射插入复制元素
- 无序映射插入()错误
- 自定义键出现c++映射插入错误
- c++多映射插入两个以上的值
- 使用配对类型的映射插入
- 调试映射插入
- STL映射插入复制构造函数