Vector容器重载运算符源码解析
《压力解码器》- 通过科学方法解析压力源 #生活技巧# #健康生活方式# #健康生活方式书籍# #压力管理书籍#
vector容器是特别有用的工具,可以完美取代数组,底层是基于数组实现的。这里主要介绍它的重载运算符==,该运算符可以实现快速判断两个数组是否是一样的。具体实现,如下代码:
1. == 运算符重载
判断两个数组是一样的,要满足两个条件:①两个Vector容器的大小要一样 ②固定位置上的值要一样
具体运用:https://leetcode.com/problems/permutation-in-string/
template <class T, class Alloc>
inline bool operator==(const vector<T, Alloc>& x, const vector<T, Alloc>& y) {
return x.size() == y.size() && equal(x.begin(), x.end(), y.begin());
}
template <class InputIterator1, class InputIterator2>
inline bool equal(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2) {
for ( ; first1 != last1; ++first1, ++first2)
if (*first1 != *first2)
return false;
return true;
}
2. < 重载运算符
<重载运算符的比较过程:依次比较数组中存储的元素的值
①若第一个数组的值小于第二个数组的值,返回true;反之,若小于,则返回false。例如[1, 2, 3] 和 [2, 3, 4] ,返回true
②若前面出现的元素的值都相等;若第一个数组的长度小于第二个数组的长度,则返回true;否则返回false
实现的源码如下:
template <class T, class Alloc>
inline bool operator<(const vector<T, Alloc>& x, const vector<T, Alloc>& y) {
return lexicographical_compare(x.begin(), x.end(), y.begin(), y.end());
}
template <class InputIterator1, class InputIterator2>
bool lexicographical_compare(InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2) {
for ( ; first1 != last1 && first2 != last2; ++first1, ++first2) {
if (*first1 < *first2)
return true;
if (*first2 < *first1)
return false;
}
return first1 == last1 && first2 != last2;
}
[1]《STL3.0源码》
网址:Vector容器重载运算符源码解析 https://www.yuejiaxmz.com/news/view/203292
相关内容
c++中vector的用法详解相等运算符运算规则,解释[]==[],[]==![],{}=={},{}==!{}
算法设计与分析
Python :=海象运算符最简单的解释
用PHP中的 == 运算符进行字符串比较
[附源码]JAVA计算机毕业设计成爱生活健康管理软件(源码+开题)
塑料菜板重量计算方法解析(塑料菜板如何计算重量呢)
【巧填运算符号:3333=73333=8=】
在TMS320F2803x微控制器上,如何通过HALL传感器实现直流无刷电机的高精度三相电机控制,并分析提高能源转换效率的方法?
288基于java ssm springboot摄影作品分享系统摄影教程(源码+文档+运行视频+讲解视频)