Существует перегруженный оператор <для шаблона класса std :: vector. </p>
template <class T,
class Allocator>
bool operator< (const vector<T, Allocator>& x, const vector<T, Allocator>& y);
, основанный на стандартном алгоритме std::lexicographical_compare
.
Вот демонстрационная программа.
#include <iostream>
#include <iomanip>
#include <vector>
#include <iterator>
#include <algorithm>
int main()
{
std::vector<int> v1 = { 1, 2 };
std::vector<int> v2 = { 1, 2, 3 };
std::vector<int> v3 = { 2 };
std::cout << std::boolalpha << ( v1 < v2 ) << '\n';
std::cout << std::lexicographical_compare( std::begin( v1 ), std::end( v1 ),
std::begin( v2 ), std::end( v2 ) )
<< '\n';
std::cout << std::boolalpha << ( v1 < v3 ) << '\n';
std::cout << std::lexicographical_compare( std::begin( v1 ), std::end( v1 ),
std::begin( v3 ), std::end( v3 ) )
<< '\n';
std::cout << std::boolalpha << ( v2 < v3 ) << '\n';
std::cout << std::lexicographical_compare( std::begin( v2 ), std::end( v2 ),
std::begin( v3 ), std::end( v3 ) )
<< '\n';
return 0;
}
Выходные данные
true
true
true
true
true
true
Таким образом, класс можно использовать в качестве ключа на карте.
По умолчанию карта шаблона класса использует объект функции std :: less, который в свою очередь использует оператор <</p>
template <class Key, class T, class Compare = less<Key>,
class Allocator = allocator<pair<const Key, T>>>
class map
{
//...
};
Однако перегруженного оператора << для шаблона класса std :: vector нет. </p>