如何将起始地址分配给地图的交互者<pair <long long =“”int,long =“”long =“”int =“”>,long long int&gt;

时间:2016-03-18 02:44:37

标签: c++ dictionary stl std-pair

我创建了一对和长long int的地图 -

map< pair< long long int, long long int >,long long int >; 

和一个交互者 -

map< pair< long long int, long long int >, long long int >::iterator it1;

当我做it1=same.begin()编译器抛出错误时,为什么会这样?

生成错误:

no viable overloaded '=' 
it1=same12.begin();
~~~^~~~~~~~~~~~~~~
  

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin /../包括/ C ++ / V1 /地图:648:29:   注意:候选功能         (隐式复制赋值运算符)不可行:没有已知的转换   &#39; __ map_iterator&lt; __ tree_iterator&lt; __ value_type,[...]&gt;,_ _ node_pointer,[...]&gt;&gt;&#39;到&#39; const __map_iterator&lt; __ tree_iterator&lt; __ value_type,[...]&gt;,         std :: __ 1 :: __ tree_node,long long&gt;,void *&gt; *,[...]&gt;&gt;&#39;第一个论点   class _LIBCPP_TYPE_VIS_ONLY __map_iterator

1 个答案:

答案 0 :(得分:3)

错误告诉您:

  

没有已知从'__map_iterator<...>'转换为'const __map_iterator<_...>'

的转换

注意const

此处看起来same12const map(或const map&,或者它可能在const方法中使用,在这种情况下,const-correctness正在施加)。这意味着.begin() will return const_iterator,而不是iterator

您需要将it1的类型更改为const_iterator而不是iterator。完整类型应为:map<pair<long long int, long long int>, long long int>::const_iterator

或者只使用auto it1 = same12.begin();