std::向量运算符重载不采用常量参数?
std::vector operator overloads don't take constant parameters?
为什么本页上的所有操作符重载都引用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,它们也是这样做的。
相关文章:
- 如何创建长度由常量参数指定的数组
- 常量参数"real"常量吗?
- 常量参数存储在哪里 (C++)?
- 区分接受常量参数的函数引用/指针和与函数参数同名的非常量参数
- 一个模板方法,用于同时接受常量和非常量参数
- 如何在使用 Qt5 构造函数时将非常量参数修改为常量参数?
- C++演示函数同时使用常量参数,即指针,这是为什么?
- C++函数中的常量参数
- 为什么一个方法对同一个变量有常量和非常量参数?
- 重载、常量参数、const_cast、const_cast<字符串 &>
- 提供带有常量参数的函数指针作为带有非常量参数的函数指针是否安全?
- 将函数赋值给函数指针,常量参数正确性
- 完美转发常量参数以进行持续评估
- 为什么重载"<<"需要一个常量参数?
- 我可以有常量参数包吗
- C++-常量参数和类变量是否令人讨厌
- 类的C++常量参数
- C++:复制构造函数,该构造函数使用具有非常量参数的函数
- C++日食给出了常量参数的"Invalid Arguments"
- 如果我使用非常量参数定义那些,我是否仍然会获得默认的复制构造函数和运算符 =