Re: [問題] Clang 奇怪的問題,跟compare functor有關
※ 引述《saladim (殺拉頂)》之銘言:
http://ideone.com/ET2sJs
以上是我的測試碼
好吧 這個結果更奇怪 連自己寫的comparator都失敗了
請各位先進幫忙指點一下 我本身主要是用clang++寫這個功能
這個網站應該是用gcc.........
謝謝
P.S. 請原諒用摘錄的方式 因為我是用virtualbox跑freebsd
現在才發現 要把檔案弄出virtualBox有點難 這種設定問題搞了我好久 @_@
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: FreeBSD 10x
: Clang++ 3.5
: 參數 -Wall (試過 -g, -O1 -O2, 基本上問題都存在或甚至更離譜)
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: 使用 stl_tree.h裡面的 red black tree
: 問題(Question):
: 最近做了一些實驗 主要是想看看能不能使用stl_tree.h裡面的那個rbtree.
: 不過遇到了一個很奇怪的問題
: 主要是當我使用std::less<int> 當作key的比較functor時, 最後結果用inorder
: traversal 或是用rbtree的begin() and end()去循序印出的結果是錯誤的,
: 用gdb進去看發現傳到 std::less<int>::operator()(const int&, const int&)
: 的值並非正確的值(-1077945256).......
: = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
: 節錄程式碼: 我是直接繼承 _Rb_Tree來使用它內部的function, 方便存取內部資料
: MyClass
: {
: public:
: struct Key
: {
: int operator()(const MyClass& class) { return class.getHead();}
: };
: public:
: int getHead() { return head;}
: private:
: .......
: int head;
: .......
: };
: template<typename K,typename V, typename KofV, typenam Comp,
: typename Alloc=std::allocator<V> >
: MyTree:public std::_Rb_tree<K,V,KofV,Comp,Alloc>
: {
: public:
: std::pair<std::_Rb_tree<K,V,KofV,Comp,Alloc>::iterator,bool >
: insert_unique(const value_type& value){this->_M_insert_unique(value);};
: }
: typedef MyTree< int, MyClass, MyClass::Key, std::less<int> > Tree;
: 使用插入:
: Tree tree;
: tree.insert(MyClass(....));
: = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
: 之後我使用inorder traversal 跟 tree.begin() to tree.end() iteration,印出的
: 順序是錯誤的. 可是!!!!!!!! 如果我把比較函數換成另外一個:
: struct MyComp
: {
: bool operator()(int a, int b) { return a < b; }
: }
: 順序就對了, 注意, 紅色標示處一定要是 int, 若是換成const int& 一樣出錯!!!
: 另外 std::less<int> 跟 MyComp單獨使用不管參數型態為何都是正常的......
: 請問有誰遇過這種狀況嗎? 見鬼的奇怪....誰能幫忙試一下g++版本
: 最近FreeBSD gcc port都編譯失敗.....壞一陣子了......
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.82.79
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1415327669.A.403.html
※ 編輯: saladim (118.166.82.79), 11/07/2014 10:35:27
→
11/07 10:36, , 1F
11/07 10:36, 1F
→
11/07 10:37, , 2F
11/07 10:37, 2F
→
11/07 10:38, , 3F
11/07 10:38, 3F
推
11/07 12:04, , 4F
11/07 12:04, 4F
→
11/07 12:09, , 5F
11/07 12:09, 5F
→
11/07 12:10, , 6F
11/07 12:10, 6F
→
11/07 12:10, , 7F
11/07 12:10, 7F
→
11/07 12:11, , 8F
11/07 12:11, 8F
→
11/07 12:11, , 9F
11/07 12:11, 9F
推
11/07 12:14, , 10F
11/07 12:14, 10F
推
11/07 12:25, , 11F
11/07 12:25, 11F
→
11/07 12:25, , 12F
11/07 12:25, 12F
→
11/07 12:27, , 13F
11/07 12:27, 13F
推
11/07 12:30, , 14F
11/07 12:30, 14F
→
11/07 12:32, , 15F
11/07 12:32, 15F
→
11/07 12:33, , 16F
11/07 12:33, 16F
→
11/07 12:34, , 17F
11/07 12:34, 17F
→
11/07 12:34, , 18F
11/07 12:34, 18F
→
11/07 12:41, , 19F
11/07 12:41, 19F
→
11/07 12:41, , 20F
11/07 12:41, 20F
推
11/07 13:01, , 21F
11/07 13:01, 21F
→
11/07 13:01, , 22F
11/07 13:01, 22F
→
11/07 13:01, , 23F
11/07 13:01, 23F
→
11/07 13:01, , 24F
11/07 13:01, 24F
→
11/07 21:04, , 25F
11/07 21:04, 25F
推
11/07 23:38, , 26F
11/07 23:38, 26F
→
11/07 23:38, , 27F
11/07 23:38, 27F
→
11/07 23:38, , 28F
11/07 23:38, 28F
→
11/08 17:10, , 29F
11/08 17:10, 29F
→
11/08 17:11, , 30F
11/08 17:11, 30F
→
11/08 17:57, , 31F
11/08 17:57, 31F
→
11/08 17:57, , 32F
11/08 17:57, 32F
→
11/09 11:53, , 33F
11/09 11:53, 33F
→
11/09 11:53, , 34F
11/09 11:53, 34F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章