std::basic_string_view<CharT,Traits>::compare
constexpr int compare( basic_string_view v ) const noexcept; |
(1) | (since C++17) |
constexpr int compare( size_type pos1, size_type count1,
basic_string_view v ) const;
|
(2) | (since C++17) |
constexpr int compare( size_type pos1, size_type count1, basic_string_view v,
size_type pos2, size_type count2 ) const;
|
(3) | (since C++17) |
constexpr int compare( const CharT* s ) const; |
(4) | (since C++17) |
constexpr int compare( size_type pos1, size_type count1,
const CharT* s ) const;
|
(5) | (since C++17) |
constexpr int compare( size_type pos1, size_type count1,
const CharT* s, size_type count2 ) const;
|
(6) | (since C++17) |
Сравнивает две последовательности символов.
1) Длина
rlen сравниваемых последовательностей — это меньшее из size() и v.size(). Функция сравнивает две представления, вызывая traits::compare(data(), v.data(), rlen), и возвращает значение в соответствии со следующей таблицей:| Условие | Результат | Возвращаемое значение | |
|---|---|---|---|
Traits::compare(data(), v.data(), rlen) < 0 |
this меньше v |
< 0 |
|
Traits::compare(data(), v.data(), rlen) == 0 |
size() < v.size() |
this меньше v |
< 0 |
size() == v.size() |
this равно v |
0 |
|
size() > v.size() |
this больше v |
> 0 |
|
Traits::compare(data(), v.data(), rlen) > 0 |
this больше v |
> 0 |
|
2) Эквивалентно
substr(pos1, count1).compare(v).
3) Эквивалентно
substr(pos1, count1).compare(v.substr(pos2, count2)).
4) Эквивалентно
compare(basic_string_view(s)).
5) Эквивалентно
substr(pos1, count1).compare(basic_string_view(s)).
6) Эквивалентно
substr(pos1, count1).compare(basic_string_view(s, count2)).Параметры
| v | - | представление для сравнения |
| s | - | указатель на строку символов для сравнения |
| count1 | - | количество символов этого представления для сравнения |
| pos1 | - | позиция первого символа в этом представлении для сравнения |
| count2 | - | количество символов заданного представления для сравнения |
| pos2 | - | позиция первого символа заданного представления для сравнения |
Возвращаемое значение
Отрицательное значение, если это представление меньше другой последовательности символов, ноль, если обе последовательности символов равны, положительное значение, если это представление больше другой последовательности символов.
Сложность
1) Линейная по числу сравниваемых символов.
Пример
#include <string_view>
int main()
{
using std::operator""sv;
static_assert("abc"sv.compare("abcd"sv) < 0);
static_assert("abcd"sv.compare("abc"sv) > 0);
static_assert("abc"sv.compare("abc"sv) == 0);
static_assert(""sv.compare(""sv) == 0);
}См. также
| сравнивает две строки (публичный член-функция std::basic_string<CharT,Traits,Allocator>) |
|
|
(C++17)(удалено в C++20)(удалено в C++20)(удалено в C++20)(удалено в C++20)(удалено в C++20)(C++20) |
лексикографически сравнивает две представления строк (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/string/basic_string_view/compare