std::basic_string_view<CharT,Traits>::compare
С сайта ru.cppreference.net
constexpr int compare( basic_string_view v ) const noexcept;
|
(1) | (начиная с C++17) |
constexpr int compare( size_type pos1, size_type count1,
basic_string_view v ) const;
|
(2) | (начиная с C++17) |
constexpr int compare( size_type pos1, size_type count1, basic_string_view v,
size_type pos2, size_type count2 ) const;
|
(3) | (начиная с C++17) |
constexpr int compare( const CharT* s ) const;
|
(4) | (начиная с C++17) |
constexpr int compare( size_type pos1, size_type count1,
const CharT* s ) const;
|
(5) | (начиная с C++17) |
constexpr int compare( size_type pos1, size_type count1,
const CharT* s, size_type count2 ) const;
|
(6) | (начиная с 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)
|
лексикографически сравнивает два string view
(шаблон функции) |