C++ 为什么要将此插入地图<;int,int>;失败?

C++ 为什么要将此插入地图<;int,int>;失败?,c++,stl,bison,C++,Stl,Bison,我正在使用Bison编写解析器,并使用map进行语义计算。 在其中一个函数中,我有以下代码: map<int, int>* result = new map<int, int>(); map<int, int>::iterator liter; map<int, int>::iterator riter; liter = lval.polyMap.begin(); riter = rval.polyMap.begin(); l = liter-&

我正在使用Bison编写解析器,并使用map进行语义计算。 在其中一个函数中,我有以下代码:

map<int, int>* result = new map<int, int>();
map<int, int>::iterator liter;
map<int, int>::iterator riter;

liter = lval.polyMap.begin();
riter = rval.polyMap.begin();
l = liter->first;
r = riter->first;
(*result).insert(l, (booleanCondition()) ? liter->second : -liter->second);
map*result=newmap();
迭代器升;
迭代器编写器;
升=lval.polyMap.begin();
riter=rval.polyMap.begin();
l=升->第一;
r=riter->first;
(*结果)。插入(l,(booleanCondition())?升->秒:-升->秒);
(polyMap的类型为
map
)。 这给了我以下错误:

/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_tree.h: In member functio
n `void std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::insert_unique(
_II, _II) [with _InputIterator = int, _Key = int, _Val = std::pair<const int, in
t>, _KeyOfValue = std::_Select1st<std::pair<const int, int> >, _Compare = std::l
ess<int>, _Alloc = std::allocator<std::pair<const int, int> >]':

/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_map.h:397:   instantiated
 from `void std::map<_Key, _Tp, _Compare, _Alloc>::insert(_InputIterator, _Input
Iterator) [with _InputIterator = int, _Key = int, _Tp = int, _Compare = std::les
s<int>, _Alloc = std::allocator<std::pair<const int, int> >]'
polynom.ypp:147:   instantiated from here

/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_tree.h:996: error: invali
d type argument of `unary *'
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_tree.h:在成员函数中
n`void std::_Rb_tree::insert_unique(
_二、 _II)[带输入计算器=int,_Key=int,_Val=std::pair,_KeyOfValue=std::_Select1st,_Compare=std::l
ess,_Alloc=std::分配器]':
/usr/lib/gcc/i686 pc-cygwin/3.4.4/include/c++/bits/stl_-map.h:397:实例化
从'void std::map::insert(\u inputierator,\u Input
迭代器)[with _inputierator=int,_Key=int,_Tp=int,_Compare=std::les
s、 _Alloc=std::分配器]'
polynom.ypp:147:从此处实例化
/usr/lib/gcc/i686 pc cygwin/3.4.4/include/c++/bits/stl_tree.h:996:error:invali
“一元*”的d类型参数
其中polynom.ypp第147行包含
(*结果)。插入(l,(booleanCondition())?升->秒:-升->秒)


有什么问题吗?

您可能需要调用
(*result)。插入(make_pair(l,(booleanCondition())?升->秒:-升->秒))