c++標準ライブラリ関数equal_range()
3020 ワード
まず、容器(vector)の要素は秩序化されています.ここでは容器要素のタイプが内蔵されているタイプの使い方は言いません.比較的簡単だからです.
コンテナ要素タイプがカスタムタイプの場合の使い方に重点を置きます.カスタムタイプのデータ・メンバーのタイプの値をequal_に渡すとrangeの3番目のパラメータの場合、入力パラメータの構造関数としてpublicを定義する必要があります.目的は、このタイプの値を暗黙的にカスタムタイプに変換することです.したがって,このタイプをパラメータとする構造関数もexplicitではない.次のようになります.
ここで、「Love」はcompに入力するvecの要素と比較する値であるが、compのパラメータはconst S&であるため、「Love」はSタイプに変換できる必要がある.
転載先:https://www.cnblogs.com/loversinJapan/p/5021497.html
コンテナ要素タイプがカスタムタイプの場合の使い方に重点を置きます.カスタムタイプのデータ・メンバーのタイプの値をequal_に渡すとrangeの3番目のパラメータの場合、入力パラメータの構造関数としてpublicを定義する必要があります.目的は、このタイプの値を暗黙的にカスタムタイプに変換することです.したがって,このタイプをパラメータとする構造関数もexplicitではない.次のようになります.
1 class S{
2 public:
3 S(const string& s){}
4 string isbn()
5 {
6 return bookNo_;
7 }
8 .......
9 private:
10 string bookNo_;
11 };
12
13 bool comp(const S& rhs, const S& lhs)
14 {
15 return rhs.isbn() < lhs.isbn();
16 }
17
18 int main()
19 {
20 vector vec{s1,s2,....};
21 auto range(vec.cbegin(),vec.cend(),"Love",comp);
22 ...............
23 }
ここで、「Love」はcompに入力するvecの要素と比較する値であるが、compのパラメータはconst S&であるため、「Love」はSタイプに変換できる必要がある.
転載先:https://www.cnblogs.com/loversinJapan/p/5021497.html