constexpr int compare(basic_string_view sv) const noexcept; // (1)
constexpr int compare(size_type pos1,
size_type n1,
basic_string_view sv) const; // (2)
constexpr int compare(size_type pos1,
size_type n1,
basic_string_view sv,
size_type pos2,
size_type n2) const; // (3)
constexpr int compare(const CharT* s) const; // (4)
constexpr int compare(size_type pos1,
size_type n1,
const CharT* s) const; // (5)
constexpr int compare(size_type pos1,
size_type n1,
const CharT* s,
size_type n2) const; // (6)
概要
他の文字列との比較を行う。
- (1) :
*this
とsv
を比較する - (2) :
*this
の範囲[pos1, pos1 + n1)
とsv
を比較する - (3) :
*this
の範囲[pos1, pos1 + n1)
とsv
の範囲[pos2, pos2 + n2)
を比較する - (4) :
*this
と文字配列s
を比較する - (5) :
*this
の範囲[pos1, pos1 + n1)
と文字配列s
を比較する - (6) :
*this
の範囲[pos1, pos1 + n1)
と文字配列s
の先頭n2
文字を比較する
効果
- (1) :
- (2) :
return substr(pos1, n1).compare(sv);
と等価 - (3) :
return substr(pos1, n1).compare(sv.substr(pos2, n2));
と等価 - (4) :
return compare(basic_string_view(s));
と等価 - (5) :
return substr(pos1, n1).compare(basic_string_view(s));
と等価 - (6) :
return substr(pos1, n1).compare(basic_string_view(s, n2));
と等価
戻り値
*this
と比較対象が同値であれば値0
を返す。そうでなければ非0
を返す。*this
よりも比較対象がサイズもしくは辞書順として小さい場合は0
未満の値、*this
よりも比較対象がサイズもしくは辞書順として大きい場合は0
より大きい値を返す。
例外
- (1) : 投げない
計算量
- (1) :
rlen
に対して線形時間
例
#include <cassert>
#include <string_view>
int main()
{
std::string_view a = "aaa";
std::string_view b = "bbb";
std::string_view c = "XXaaaYY";
// (1)
{
assert(a.compare(a) == 0);
assert(a.compare(b) < 0);
assert(b.compare(a) > 0);
}
// (2)
{
assert(c.compare(2, 3, a) == 0);
}
// (3)
{
assert(c.compare(2, 3, a, 0, 3) == 0);
}
// (4)
{
assert(a.compare("aaa") == 0);
}
// (5)
{
assert(c.compare(2, 3, "aaa") == 0);
}
// (6)
{
assert(c.compare(2, 3, "aaaZZ", 3) == 0);
}
}
42
assert(c.compare(2, 3, "aaaZZ", 3) == 0);
#include <cassert>
#include <string_view>
int main()
{
std::string_view a = "aaa";
std::string_view b = "bbb";
std::string_view c = "XXaaaYY";
// (1)
{
assert(a.compare(a) == 0);
assert(a.compare(b) < 0);
assert(b.compare(a) > 0);
}
// (2)
{
出力
バージョン
言語
- C++17
処理系
- Clang: 4.0 ✅
- GCC: 7.1 ✅
- ICC: ??
- Visual C++: ??