std::向量运算符重载不采用常量参数?

std::vector operator overloads don't take constant parameters?

本文关键字:常量 参数 向量 运算符 重载 std      更新时间:2023-10-16

为什么本页上的所有操作符重载都引用std::vector而不引用const ?它们不修改向量,那么为什么不修改const呢?

看起来像是该页上的疏忽。c++11标准的23.3.6.1类模板向量概述它们都取const& s:

template <class T, class Allocator>
bool operator==(const vector<T,Allocator>& x,
                const vector<T,Allocator>& y);
template <class T, class Allocator>
bool operator< (const vector<T,Allocator>& x,
                const vector<T,Allocator>& y);
template <class T, class Allocator>
bool operator!=(const vector<T,Allocator>& x,
                const vector<T,Allocator>& y);
template <class T, class Allocator>
bool operator> (const vector<T,Allocator>& x,
                const vector<T,Allocator>& y);
template <class T, class Allocator>
bool operator>=(const vector<T,Allocator>& x,
                const vector<T,Allocator>& y);
template <class T, class Allocator>
bool operator<=(const vector<T,Allocator>& x,
                const vector<T,Allocator>& y);

根据本页,它们接受const引用作为实参。根据c++  11标准§ 23.3.6.1和c++  03标准§ 23.2.4,它们也是这样做的。