c++ - 将对象插入集合

标签 c++

我想像这样将 vector 插入到集合中:

set<vector<prmEdge> > cammini;
vector<prmEdge> vecEdge;
cammini.insert(vecEdge);

我有这样的编译错误:

prmPlanner.cpp:1285:   instantiated from here
/usr/include/c++/4.2/bits/stl_algobase.h:853: error: no match for ‘operator<’ in ‘__first1.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = const prmEdge*, _Container = std::vector<prmEdge, std::allocator<prmEdge> >]() < __first2.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = const prmEdge*, _Container = std::vector<prmEdge, std::allocator<prmEdge> >]()’
/usr/include/c++/4.2/bits/stl_algobase.h:855: error: no match for ‘operator<’ in ‘__first2.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = const prmEdge*, _Container = std::vector<prmEdge, std::allocator<prmEdge> >]() < __first1.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = const prmEdge*, _Container = std::vector<prmEdge, std::allocator<prmEdge> >]()’
make[1]: *** [prmPlanner.o] Errore 1

我该怎么办? 有人可以帮帮我吗??

非常感谢

最佳答案

它不知道如何比较 vector 。你应该提供 operator<对于 vector<prmEdge> (或 prmEdge 自动使用 std::lexicographical_compare 用于 vector )或使用 unordered_set如果您实际上不需要经过排序的 vector 集。

关于c++ - 将对象插入集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2372491/

相关文章:

c++ - 如何在 C++ (g++) 中初始化类中的字符串

c++ - 找出一个点位于沿对角线分割的矩形内的哪个扇区

c++ - 我可以从 constexpr 函数返回一个可选值吗?

java - 如何使用 OpenCl rand 和 android JNI 实现双指针

c++ - 头文件和源文件函数定义

c++ - SHDeleteKey 和 RegDeleteTree 有什么区别?

c++ - IDirect3DDevice9::Reset 异常的原因可能是什么?

c++ - 如何过滤掉GetTokenInformation()返回的特殊组?

c++ - std::nth_element 是否保证在存在关系的情况下进行分区?

c++ - 复制解码的 ffmpeg AVFrame