c++中的映射错误
Map Error in C++
我正在使用GCC 4.6编译器,当我构建我的代码(ns3)时,我得到错误:
In file included from /usr/include/c++/4.4/map:60,
from ../src/internet-stack/tcp-typedefs.h:23,
from ../src/internet-stack/mp-tcp-socket-impl.cc:16:
/usr/include/c++/4.4/bits/stl_tree.h: In member function ‘void std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_unique(_II, _II) [with _InputIterator = unsigned int, _Key = unsigned int, _Val = std::pair<const unsigned int, unsigned int>, _KeyOfValue = std::_Select1st<std::pair<const unsigned int, unsigned int> >, _Compare = std::less<unsigned int>, _Alloc = std::allocator<std::pair<const unsigned int, unsigned int> >]’:
/usr/include/c++/4.4/bits/stl_map.h:553: instantiated from ‘void std::map<_Key, _Tp, _Compare, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = unsigned int, _Key = unsigned int, _Tp = unsigned int, _Compare = std::less<unsigned int>, _Alloc = std::allocator<std::pair<const unsigned int, unsigned int> >]’
../src/internet-stack/mp-tcp-socket-impl.cc:1536: instantiated from here
/usr/include/c++/4.4/bits/stl_tree.h:1324: error: invalid type argument of ‘unary *’
这是因为我使用了map:
map<uint32_t, uint32_t> dis;
,我像这样插入:
dis.insert(p,t);
我想不出解决这个问题的方法。谢谢你的帮助。
我认为你没有像你应该做的那样使用插入方法。我不确定,因为我看不到你正在使用的参数的声明,但编译器说你正在使用的方法:
void insert (InputIterator first, InputIterator last)
,因此实参可以是同一容器的迭代器。这里,第一个参数指定要复制的容器的开始位置,最后一个参数标记该范围的结束位置(不包括最后一个元素)。以下是其他选项:
pair<iterator,bool> insert (const value_type& val);
这是最常见的,我猜你想使用这个函数,它插入元素val到映射。这里val是某个类型为pair<T1,T2>
的变量,其中T1和T2是创建映射时输入的参数(在这里是unsigned int, unsigned int)。可以使用std.
iterator insert (iterator position, const value_type& val);
最后一个与前一个类似,但它告诉映射,新元素的位置可能接近position。但这只是一个性能方面的提示,因为map是一个具有良好定义的顺序的树。
你的代码可能是dis.insert(make_pair(p,t));
。
问候。
您将GCC 4.4中的库与GCC 4.6一起使用-这可能是问题所在。
尝试将4.6头文件传递给编译器(如-I/usr/include/c++/4.6)
相关文章:
- C++映射分割错误(核心转储)
- 错误处理.将系统错误代码映射到泛型
- 删除映射和分割错误中的一个过去结束元素
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- OpenGL 4.3 错误地将第 4 个纹理坐标映射到与第 3 个纹理坐标相同的位置
- 线程时访问静态映射时出现隔离错误
- C++ 将元素分配给映射值时访问错误
- C++映射容器 erase() 分段错误
- 为C++中的无序映射获取给定输入键的错误值
- std::映射服装比较函数和函数/lambda错误
- 自定义哈希表实现-将字符串映射到整数时出现内存错误
- 使用无序映射进行错误索引
- std::映射导致插入时出现C2664错误
- 与映射和unordered_map相关的编译错误:"attempting to reference a deleted function"
- 在共享内存中插入映射映射时出现编译器错误
- 访问range_expression中的嵌套元素会返回不完整的映射(段错误)
- std::map 擦除 - 将迭代器传递给错误的映射
- 解析序列/映射节点时出现无效的 yaml 节点错误
- 为什么 du -sh 输出错误大小的内存映射文件
- C ++尝试访问映射中的元素会给我一个不匹配的函数调用错误