c++ stl 中的map容器中的元素是按照key的公升序進行排列的,所以map的key需要使用自定義型別時,該自定義型別必須過載operator《操作符,否則會出現下面的編譯錯誤:
in file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../
../.
./..
/include
/c++
/4.4.7/string:50,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../
../.
./..
/include
/c++
/4.4.7/bits/locale_classes.h:42,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../
../.
./..
/include
/c++
/4.4.7/bits/ios_base.h:43,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../
../.
./..
/include
/c++
/4.4.7/ios:43,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../
../.
./..
/include
/c++
/4.4.7/ostream:40,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../
../.
./..
/include
/c++
/4.4.7/iostream:40,
from dagexing/src/online/dgxdbrpc/dgx_db.cc:2:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../
../.
./..
/include
/c++
/4.4.7/bits/stl_function.h:
in member function 'bool std::less<_tp>::operator()(const _tp&, const _tp&) const [with _tp = dgx_db::ktvroominfo]'
:/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../
../.
./..
/include
/c++
/4.4.7/bits/stl_map.h:449: instantiated from '_tp& std::map<_key, _tp, _compare, _alloc>::operator(const _key&) [with _key = dgx_db::ktvroominfo, _tp = dgx_db::uint32datatype, _compare = std::less, _alloc = std::allocator>]'
./dagexing/src/online/dgxdbrpc/dbcache.h:53: instantiated from 'int dgx_db::dbcache::update(const keytype&, valuetype&) [with keytype = dgx_db::ktvroominfo, valuetype = dgx_db::uint32datatype]'
dagexing/src/online/dgxdbrpc/dgx_db.cc:136: instantiated from here
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../
../.
./..
/include
/c++
/4.4.7/bits/stl_function.h:230: error: no match for
'operator<'
in'__x < __y'
這個錯誤表示_key = dgx_db::ktvroominfo沒有過載operator《操作符。加入下列過載函式後通過編譯
bool operator <
(const ktvroominfo& info)
const
C STLmap的使用和特點 C STL相關
map是c 98中引入的二叉樹資料結構 1 map有四個引數 2 count 和find 函式傳入的引數都是key 3 finditer迭代器返回的是const int 4 在map中插入元素需要用make pair 5 insert有返回兩個引數第乙個是迭代器的位置,第二個表示插入是否成功 6 e...
vue中key值與react中key值的區別
兩者演算法比較不同 分別對olds olde s e兩兩做samevnode比較,有四種值,舊集合的開頭和結束 olds,olde 新集合的開頭和結束 s e 當其中兩個能匹配上那麼真實dom中的相應節點會移到vnode相應的位置,這句話有點繞,打個比方 大意就是每次比較四個key值,匹配上的就移動...
v for使用key的原因
1.vue中列表迴圈需加 key 唯一標識 唯一標識最好是item裡面id等。因為vue元件高度復用,增加key可以標識元件的唯一性,更好地區別各個元件。key的作用主要是為了高效地更新虛擬dom。2.key主要用來做dom diff演算法用的,diff演算法是同級比較,比較當前標籤上的key還有它...