簡體   English   中英

C ++:std :: map排序

[英]C++: std::map sorting

我是C ++的新手,這個問題對於很多人來說似乎都很明顯。

如果我寫這樣的話

std::map<int, double> m;
  • 是否保證m根據int順序排序?
  • 是否有必要定義一個比較器類來執行排序?

例如,

class own_int_less : public binary_function<int, int, bool>
{
public:
    bool operator()( const double &left, const double &right  ) const
    {
        return (abs(left - right) > epsilon) && (left < right);
    };
    double epsilon;
};
  • 排序何時真正發生? 我的意思是每次我在地圖中插入內容時都會調用排序功能嗎? 還是在遍歷地圖之前調用它?

謝謝。

是否保證m根據int順序排序?

是。 默認比較器為std::less<Key> ,在您的情況下為std::less<int> ,它按預期使用<

是否有必要定義一個比較器類來執行排序?

否,因為先前的答案是“是”!

排序何時真正發生?

典型的map實現使用比較器將新元素插入正確的位置。 查找時還使用比較器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM