我有以下的地图结构:
std::map<std::pair<int, char>, int> transitions;
表示非确定性自动机的过渡,每个具有2个整数和字符,I,J和C,表示其中过渡,即,从状态变为状态i到与字符C.状态j
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 ));
}