STL标准中没有区分基本算法或复杂算法,单SGI把常用的一些算法(equal,fill,fill_n,iter_swap,lexicographical_compare,max,min,mismatch,swap,copy,copy_backward,copy_n)定义在<stl_algobase.h>只中,其他算法定义在<stl_algo.h>中。

stl_algobase.h源码:

#ifndef __SGI_STL_INTERNAL_ALGOBASE_H
#define __SGI_STL_INTERNAL_ALGOBASE_H#ifndef __STL_CONFIG_H
#include <stl_config.h>
#endif
#ifndef __SGI_STL_INTERNAL_RELOPS
#include <stl_relops.h>//这个头文件是提供操作符重载
#endif
#ifndef __SGI_STL_INTERNAL_PAIR_H
#include <stl_pair.h>
#endif
#ifndef __TYPE_TRAITS_H
#include <type_traits.h>//这个文件提供萃取技术
#endif#include <string.h>
#include <limits.h>
#include <stdlib.h>
#include <stddef.h>
#include <new.h>#ifdef __STL_USE_NEW_IOSTREAMS 
#include <iosfwd>
#else /* __STL_USE_NEW_IOSTREAMS */
#include <iostream.h>
#endif /* __STL_USE_NEW_IOSTREAMS */#ifndef __SGI_STL_INTERNAL_ITERATOR_H
#include <stl_iterator_base.h>
#include <stl_iterator.h>
#endif// We pick up concept_checks.h from stl_iterator_base.h.__STL_BEGIN_NAMESPACE// swap and iter_swap
//交换两个迭代器a和b所指的内容
/*对外接口:template <class ForwardIterator1, class ForwardIterator2>void iter_swap (ForwardIterator1 a, ForwardIterator2 b);
*/
template <class _ForwardIter1, class _ForwardIter2, class _Tp>
inline void __iter_swap(_ForwardIter1 __a, _ForwardIter2 __b, _Tp*) {_Tp __tmp = *__a;*__a = *__b;*__b = __tmp;
}template <class _ForwardIter1, class _ForwardIter2>
inline void iter_swap(_ForwardIter1 __a, _ForwardIter2 __b) {__STL_REQUIRES(_ForwardIter1, _Mutable_ForwardIterator);__STL_REQUIRES(_ForwardIter2, _Mutable_ForwardIterator);__STL_CONVERTIBLE(typename iterator_traits<_ForwardIter1>::value_type,typename iterator_traits<_ForwardIter2>::value_type);__STL_CONVERTIBLE(typename iterator_traits<_ForwardIter2>::value_type,typename iterator_traits<_ForwardIter1>::value_type);//调用上面的简单交换函数,萃取出a的型别__iter_swap(__a, __b, __VALUE_TYPE(__a));
}//交换a和b的值
//这里采用引用传参
template <class _Tp>
inline void swap(_Tp& __a, _Tp& __b) {__STL_REQUIRES(_Tp, _Assignable);_Tp __tmp = __a;__a = __b;__b = __tmp;
}//--------------------------------------------------
// min and max/*
返回最小值:Returns the smallest of a and b. If both are equivalent, a is returned.
default (1)	:默认是采用operator<进行比较template <class T> const T& min (const T& a, const T& b);
custom (2)	:用户自己提供的comptemplate <class T, class Compare>const T& min (const T& a, const T& b, Compare comp);
*/
/*
返回最大值:Returns the largest of a and b. If both are equivalent, a is returned.
default (1)	默认是采用operator<进行比较template <class T> const T& max (const T& a, const T& b);
custom (2)	用户自己提供的comptemplate <class T, class Compare>const T& max (const T& a, const T& b, Compare comp);
*/
#if !defined(__BORLANDC__) || __BORLANDC__ >= 0x540 /* C++ Builder 4.0 */#undef min
#undef maxtemplate <class _Tp>
inline const _Tp& min(const _Tp& __a, const _Tp& __b) {__STL_REQUIRES(_Tp, _LessThanComparable);return __b < __a ? __b : __a;
}template <class _Tp>
inline const _Tp& max(const _Tp& __a, const _Tp& __b) {__STL_REQUIRES(_Tp, _LessThanComparable);return  __a < __b ? __b : __a;
}#endif /* __BORLANDC__ */template <class _Tp, class _Compare>
inline const _Tp& min(const _Tp& __a, const _Tp& __b, _Compare __comp) {return __comp(__b, __a) ? __b : __a;
}template <class _Tp, class _Compare>
inline const _Tp& max(const _Tp& __a, const _Tp& __b, _Compare __comp) {return __comp(__a, __b) ? __b : __a;
}//--------------------------------------------------
// copy// All of these auxiliary functions serve two purposes.  (1) Replace
// calls to copy with memmove whenever possible.  (Memmove, not memcpy,
// because the input and output ranges are permitted to overlap.)
// (2) If we're using random access iterators, then write the loop as
// a for loop with an explicit count.//若迭代器类型为输入迭代器,则调用此函数
template <class _InputIter, class _OutputIter, class _Distance>
inline _OutputIter __copy(_InputIter __first, _InputIter __last,_OutputIter __result,input_iterator_tag, _Distance*)
{for ( ; __first != __last; ++__result, ++__first)//只能一个一个的遍历输入区间*__result = *__first;//一个一个的赋值operator=return __result;
}
//若迭代器的类型为随机访问迭代器,则调用此函数
template <class _RandomAccessIter, class _OutputIter, class _Distance>
inline _OutputIter
__copy(_RandomAccessIter __first, _RandomAccessIter __last,_OutputIter __result, random_access_iterator_tag, _Distance*)
{for (_Distance __n = __last - __first; __n > 0; --__n) {//遍历输入区间*__result = *__first;//对应赋值operator=++__first;++__result;}return __result;
}//直接调用memmove复制,不需要其他操作
template <class _Tp>
inline _Tp*
__copy_trivial(const _Tp* __first, const _Tp* __last, _Tp* __result) {
//memmove()是移动复制,注意:source和destination的内存空间可以重叠
/*
原型:void * memmove ( void * destination, const void * source, size_t num );
功能:
Copies the values of num bytes from the location pointed by source to the memory block pointed by destination. 
Copying takes place as if an intermediate buffer were used, allowing the destination and source to overlap.
注意:memmove有一个功能就是首先会把输入内容复制下来,所以允许输入区间与输出区间起始位置重叠
举例:example#include <stdio.h>#include <string.h>int main (){char str[] = "memmove can be very useful......";//允许输出区间起始位置与输入区间重叠//这是memmove的功能memmove (str+20,str+15,11);puts (str);return 0;}Output:memmove can be very very useful.
*/memmove(__result, __first, sizeof(_Tp) * (__last - __first));return __result + (__last - __first);
}#if defined(__STL_FUNCTION_TMPL_PARTIAL_ORDER)
//若不提供赋值操作assignment_operator,则调用此函数
template <class _InputIter, class _OutputIter>
inline _OutputIter __copy_aux2(_InputIter __first, _InputIter __last,_OutputIter __result, __false_type) {
//首先萃取出迭代器的类型return __copy(__first, __last, __result,__ITERATOR_CATEGORY(__first),__DISTANCE_TYPE(__first));
}
//若提供赋值操作assignment_operator,则调用此函数
template <class _InputIter, class _OutputIter>
inline _OutputIter __copy_aux2(_InputIter __first, _InputIter __last,_OutputIter __result, __true_type) {//首先萃取出迭代器的类型return __copy(__first, __last, __result,__ITERATOR_CATEGORY(__first),__DISTANCE_TYPE(__first));
}
#ifndef __USLC__//偏特化,参数为T*
template <class _Tp>
inline _Tp* __copy_aux2(_Tp* __first, _Tp* __last, _Tp* __result,__true_type) {return __copy_trivial(__first, __last, __result);
}#endif /* __USLC__ */
//偏特化,参数为const T*
//若提供赋值操作assignment_operator,则调用此函数
template <class _Tp>
inline _Tp* __copy_aux2(const _Tp* __first, const _Tp* __last, _Tp* __result,__true_type) {return __copy_trivial(__first, __last, __result);//转而调用该函数
}//调用该函数
template <class _InputIter, class _OutputIter, class _Tp>
inline _OutputIter __copy_aux(_InputIter __first, _InputIter __last,_OutputIter __result, _Tp*) {typedef typename __type_traits<_Tp>::has_trivial_assignment_operator_Trivial;//首先判断是否提供赋值操作assignment_operatorreturn __copy_aux2(__first, __last, __result, _Trivial());
}/*
复制函数:template <class InputIterator, class OutputIterator>OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result);
功能:Copies the elements in the range [first,last) into the range beginning at result.
将输入区间[first,last)的内容复制到[result,result+(last-first))内注意:result不能位于[first,last)内部,即输出端的起始位置不能位于输入区间内部;
但是允许输出区间的尾部与输入区间重叠,这与copy_backward相反若两个区间不重叠则copy()和copy_backward()都可以使用
*///完全泛化版,对外接口
template <class _InputIter, class _OutputIter>
inline _OutputIter copy(_InputIter __first, _InputIter __last,_OutputIter __result) {__STL_REQUIRES(_InputIter, _InputIterator);__STL_REQUIRES(_OutputIter, _OutputIterator);//首先萃取出first的类型,然后针对特定类型调用对应的函数__copy_aux()return __copy_aux(__first, __last, __result, __VALUE_TYPE(__first));
}// Hack for compilers that don't have partial ordering of function templates
// but do have partial specialization of class templates.
#elif defined(__STL_CLASS_PARTIAL_SPECIALIZATION)//完全泛化版本
template <class _InputIter, class _OutputIter, class _BoolType>
struct __copy_dispatch {static _OutputIter copy(_InputIter __first, _InputIter __last,_OutputIter __result) {typedef typename iterator_traits<_InputIter>::iterator_category _Category;typedef typename iterator_traits<_InputIter>::difference_type _Distance;return __copy(__first, __last, __result, _Category(), (_Distance*) 0);}
};//偏特化1,两个参数都是T*
template <class _Tp>
struct __copy_dispatch<_Tp*, _Tp*, __true_type>
{static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) {return __copy_trivial(__first, __last, __result);}
};//偏特化2,第一个参数是const T*,第二个参数是T*
template <class _Tp>
struct __copy_dispatch<const _Tp*, _Tp*, __true_type>
{static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) {return __copy_trivial(__first, __last, __result);}
};//对外接口,完全泛化
template <class _InputIter, class _OutputIter>
inline _OutputIter copy(_InputIter __first, _InputIter __last,_OutputIter __result) {__STL_REQUIRES(_InputIter, _InputIterator);__STL_REQUIRES(_OutputIter, _OutputIterator);typedef typename iterator_traits<_InputIter>::value_type _Tp;typedef typename __type_traits<_Tp>::has_trivial_assignment_operator_Trivial;return __copy_dispatch<_InputIter, _OutputIter, _Trivial>::copy(__first, __last, __result);
}// Fallback for compilers with neither partial ordering nor partial
// specialization.  Define the faster version for the basic builtin
// types.
#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */template <class _InputIter, class _OutputIter>
inline _OutputIter copy(_InputIter __first, _InputIter __last,_OutputIter __result)
{return __copy(__first, __last, __result,__ITERATOR_CATEGORY(__first),__DISTANCE_TYPE(__first));
}#define __SGI_STL_DECLARE_COPY_TRIVIAL(_Tp)                                \inline _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) { \memmove(__result, __first, sizeof(_Tp) * (__last - __first));          \return __result + (__last - __first);                                  \}__SGI_STL_DECLARE_COPY_TRIVIAL(char)
__SGI_STL_DECLARE_COPY_TRIVIAL(signed char)
__SGI_STL_DECLARE_COPY_TRIVIAL(unsigned char)
__SGI_STL_DECLARE_COPY_TRIVIAL(short)
__SGI_STL_DECLARE_COPY_TRIVIAL(unsigned short)
__SGI_STL_DECLARE_COPY_TRIVIAL(int)
__SGI_STL_DECLARE_COPY_TRIVIAL(unsigned int)
__SGI_STL_DECLARE_COPY_TRIVIAL(long)
__SGI_STL_DECLARE_COPY_TRIVIAL(unsigned long)
#ifdef __STL_HAS_WCHAR_T
__SGI_STL_DECLARE_COPY_TRIVIAL(wchar_t)
#endif
#ifdef _STL_LONG_LONG
__SGI_STL_DECLARE_COPY_TRIVIAL(long long)
__SGI_STL_DECLARE_COPY_TRIVIAL(unsigned long long)
#endif 
__SGI_STL_DECLARE_COPY_TRIVIAL(float)
__SGI_STL_DECLARE_COPY_TRIVIAL(double)
__SGI_STL_DECLARE_COPY_TRIVIAL(long double)#undef __SGI_STL_DECLARE_COPY_TRIVIAL
#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION *///--------------------------------------------------
// copy_backward
/*原型template <class BidirectionalIterator1, class BidirectionalIterator2>BidirectionalIterator2 copy_backward (BidirectionalIterator1 first,BidirectionalIterator1 last,BidirectionalIterator2 result);
*///迭代器类型是双向迭代器的调用
template <class _BidirectionalIter1, class _BidirectionalIter2, class _Distance>
inline _BidirectionalIter2 __copy_backward(_BidirectionalIter1 __first, _BidirectionalIter1 __last, _BidirectionalIter2 __result,bidirectional_iterator_tag,_Distance*)
{while (__first != __last)//遍历输入区间*--__result = *--__last;//逆向赋值operator=return __result;
}
//迭代器类型是随机访问迭代器的调用
template <class _RandomAccessIter, class _BidirectionalIter, class _Distance>
inline _BidirectionalIter __copy_backward(_RandomAccessIter __first, _RandomAccessIter __last, _BidirectionalIter __result,random_access_iterator_tag,_Distance*)
{for (_Distance __n = __last - __first; __n > 0; --__n)//遍历输入区间*--__result = *--__last;//逆向赋值operator=return __result;
}#ifdef __STL_CLASS_PARTIAL_SPECIALIZATION // This dispatch class is a workaround for compilers that do not 
// have partial ordering of function templates.  All we're doing is
// creating a specialization so that we can turn a call to copy_backward
// into a memmove whenever possible.
//完全泛化版
template <class _BidirectionalIter1, class _BidirectionalIter2,class _BoolType>
struct __copy_backward_dispatch
{typedef typename iterator_traits<_BidirectionalIter1>::iterator_category _Cat;typedef typename iterator_traits<_BidirectionalIter1>::difference_type_Distance;static _BidirectionalIter2 copy(_BidirectionalIter1 __first, _BidirectionalIter1 __last, _BidirectionalIter2 __result) {return __copy_backward(__first, __last, __result, _Cat(), (_Distance*) 0);}
};//偏特化,参数为原生指针T*
template <class _Tp>
struct __copy_backward_dispatch<_Tp*, _Tp*, __true_type>
{static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) {const ptrdiff_t _Num = __last - __first;memmove(__result - _Num, __first, sizeof(_Tp) * _Num);return __result - _Num;}
};//偏特化,第一个参数为const T*,第二个参数为T*
template <class _Tp>
struct __copy_backward_dispatch<const _Tp*, _Tp*, __true_type>
{static _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) {return  __copy_backward_dispatch<_Tp*, _Tp*, __true_type>::copy(__first, __last, __result);}
};//对外接口
template <class _BI1, class _BI2>
inline _BI2 copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) {__STL_REQUIRES(_BI1, _BidirectionalIterator);__STL_REQUIRES(_BI2, _Mutable_BidirectionalIterator);__STL_CONVERTIBLE(typename iterator_traits<_BI1>::value_type,typename iterator_traits<_BI2>::value_type);typedef typename __type_traits<typename iterator_traits<_BI2>::value_type>::has_trivial_assignment_operator_Trivial;return __copy_backward_dispatch<_BI1, _BI2, _Trivial>::copy(__first, __last, __result);
}#else /* __STL_CLASS_PARTIAL_SPECIALIZATION */template <class _BI1, class _BI2>
inline _BI2 copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) {return __copy_backward(__first, __last, __result,__ITERATOR_CATEGORY(__first),__DISTANCE_TYPE(__first));
}#endif /* __STL_CLASS_PARTIAL_SPECIALIZATION *///--------------------------------------------------
// copy_n (not part of the C++ standard)
/*原型template <class InputIterator, class Size, class OutputIterator>OutputIterator copy_n (InputIterator first, Size n, OutputIterator result);例子:#include <iostream>     // std::cout#include <algorithm>    // std::copy#include <vector>       // std::vectorint main () {int myints[]={10,20,30,40,50,60,70};std::vector<int> myvector;myvector.resize(7);   // allocate space for 7 elementsstd::copy_n ( myints, 7, myvector.begin() );std::cout << "myvector contains:";for (std::vector<int>::iterator it = myvector.begin(); it!=myvector.end(); ++it)std::cout << ' ' << *it;std::cout << '\n';return 0;}Output:myvector contains: 10 20 30 40 50 60 70
*/
//C++11已经把这个列入标准库//迭代器类型为输入迭代器
//从指定位置开始复制__count个与*first值相等的值
template <class _InputIter, class _Size, class _OutputIter>
pair<_InputIter, _OutputIter> __copy_n(_InputIter __first, _Size __count,_OutputIter __result,input_iterator_tag) {for ( ; __count > 0; --__count) {//若个数不小于0,则进行操作*__result = *__first;//赋值operator=++__first;++__result;}return pair<_InputIter, _OutputIter>(__first, __result);
}//迭代器为随机访问迭代器
template <class _RAIter, class _Size, class _OutputIter>
inline pair<_RAIter, _OutputIter>
__copy_n(_RAIter __first, _Size __count,_OutputIter __result,random_access_iterator_tag) {_RAIter __last = __first + __count;return pair<_RAIter, _OutputIter>(__last, copy(__first, __last, __result));
}//萃取迭代器的类型
template <class _InputIter, class _Size, class _OutputIter>
inline pair<_InputIter, _OutputIter>
__copy_n(_InputIter __first, _Size __count, _OutputIter __result) {return __copy_n(__first, __count, __result,__ITERATOR_CATEGORY(__first));
}//对外接口,完全泛化
template <class _InputIter, class _Size, class _OutputIter>
inline pair<_InputIter, _OutputIter>
copy_n(_InputIter __first, _Size __count, _OutputIter __result) {__STL_REQUIRES(_InputIter, _InputIterator);__STL_REQUIRES(_OutputIter, _OutputIterator);return __copy_n(__first, __count, __result);
}//--------------------------------------------------
// fill and fill_n/*
填充值:Assigns val to all the elements in the range [first,last).template <class ForwardIterator, class T>void fill (ForwardIterator first, ForwardIterator last, const T& val);
*/
//把区间[first,last)的值都填充为value
template <class _ForwardIter, class _Tp>
void fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __value) {__STL_REQUIRES(_ForwardIter, _Mutable_ForwardIterator);for ( ; __first != __last; ++__first)//遍历区间*__first = __value;//当前位置赋予值value
}
/*
在指定位置连续填充n个值:Assigns val to the first n elements of the sequence pointed by first.template <class OutputIterator, class Size, class T>void fill_n (OutputIterator first, Size n, const T& val);
*/
//从first开始连续填充n个value值
template <class _OutputIter, class _Size, class _Tp>
_OutputIter fill_n(_OutputIter __first, _Size __n, const _Tp& __value) {__STL_REQUIRES(_OutputIter, _OutputIterator);for ( ; __n > 0; --__n, ++__first)//从first开始遍历n个位置*__first = __value;//当前位置赋予值valuereturn __first;
}// Specialization: for one-byte types we can use memset.inline void fill(unsigned char* __first, unsigned char* __last,const unsigned char& __c) {unsigned char __tmp = __c;//按字节填充//Sets the first num bytes of the block of memory pointed by ptr to the specified value (interpreted as an unsigned char).memset(__first, __tmp, __last - __first);
}inline void fill(signed char* __first, signed char* __last,const signed char& __c) {signed char __tmp = __c;memset(__first, static_cast<unsigned char>(__tmp), __last - __first);
}inline void fill(char* __first, char* __last, const char& __c) {char __tmp = __c;memset(__first, static_cast<unsigned char>(__tmp), __last - __first);
}#ifdef __STL_FUNCTION_TMPL_PARTIAL_ORDERtemplate <class _Size>
inline unsigned char* fill_n(unsigned char* __first, _Size __n,const unsigned char& __c) {fill(__first, __first + __n, __c);return __first + __n;
}template <class _Size>
inline signed char* fill_n(char* __first, _Size __n,const signed char& __c) {fill(__first, __first + __n, __c);return __first + __n;
}template <class _Size>
inline char* fill_n(char* __first, _Size __n, const char& __c) {fill(__first, __first + __n, __c);return __first + __n;
}#endif /* __STL_FUNCTION_TMPL_PARTIAL_ORDER *///--------------------------------------------------
// equal and mismatch/*
判断两个区间的第一个不匹配点,返回一个由两个迭代器组成的pair,
其中第一个迭代器指向第一个区间的不匹配点,第二个迭代器指向第二个区间的不匹配点
如果都匹配,返回的是指向两个区间的last迭代器。quality (1)	:采用默认operator==比较template <class InputIterator1, class InputIterator2>pair<InputIterator1, InputIterator2>mismatch (InputIterator1 first1, InputIterator1 last1,InputIterator2 first2);
predicate (2):指定比较规则predtemplate <class InputIterator1, class InputIterator2, class BinaryPredicate>pair<InputIterator1, InputIterator2>mismatch (InputIterator1 first1, InputIterator1 last1,InputIterator2 first2, BinaryPredicate pred);
*/
//版本一:采用默认比较规则operator==
template <class _InputIter1, class _InputIter2>
pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1,_InputIter1 __last1,_InputIter2 __first2) {__STL_REQUIRES(_InputIter1, _InputIterator);__STL_REQUIRES(_InputIter2, _InputIterator);__STL_REQUIRES(typename iterator_traits<_InputIter1>::value_type,_EqualityComparable);__STL_REQUIRES(typename iterator_traits<_InputIter2>::value_type,_EqualityComparable);//遍历区间,寻找不匹配点//注意:第一个区间的元素不能比第二个区间元素多while (__first1 != __last1 && *__first1 == *__first2) {++__first1;++__first2;}return pair<_InputIter1, _InputIter2>(__first1, __first2);
}
//版本二:自定义比较规则
template <class _InputIter1, class _InputIter2, class _BinaryPredicate>
pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1,_InputIter1 __last1,_InputIter2 __first2,_BinaryPredicate __binary_pred) {__STL_REQUIRES(_InputIter1, _InputIterator);__STL_REQUIRES(_InputIter2, _InputIterator);//遍历区间,寻找不匹配点while (__first1 != __last1 && __binary_pred(*__first1, *__first2)) {++__first1;++__first2;}return pair<_InputIter1, _InputIter2>(__first1, __first2);
}
/*
Compares the elements in the range [first1,last1) with those in the range beginning at first2, 
and returns true if all of the elements in both ranges match.
比较两个序列指定范围大小:如果两个序列在[first,last)区间相等,则返回true如果第二个序列的元素比较多,多出来的元素不予考虑;
equality (1):默认采用operator==比较template <class InputIterator1, class InputIterator2>bool equal (InputIterator1 first1, InputIterator1 last1,InputIterator2 first2);
predicate (2):用户可指定比较规则template <class InputIterator1, class InputIterator2, class BinaryPredicate>bool equal (InputIterator1 first1, InputIterator1 last1,InputIterator2 first2, BinaryPredicate pred);
*/
//版本一‘:采用默认比较规则operator==
template <class _InputIter1, class _InputIter2>
inline bool equal(_InputIter1 __first1, _InputIter1 __last1,_InputIter2 __first2) {__STL_REQUIRES(_InputIter1, _InputIterator);__STL_REQUIRES(_InputIter2, _InputIterator);__STL_REQUIRES(typename iterator_traits<_InputIter1>::value_type,_EqualityComparable);__STL_REQUIRES(typename iterator_traits<_InputIter2>::value_type,_EqualityComparable);//遍历区间for ( ; __first1 != __last1; ++__first1, ++__first2)if (*__first1 != *__first2)return false;//若对应元素不相等,返回FALSEreturn true;//至此全部相等
}
//版本二:采用用户自定义的比较规则
template <class _InputIter1, class _InputIter2, class _BinaryPredicate>
inline bool equal(_InputIter1 __first1, _InputIter1 __last1,_InputIter2 __first2, _BinaryPredicate __binary_pred) {__STL_REQUIRES(_InputIter1, _InputIterator);__STL_REQUIRES(_InputIter2, _InputIterator);//遍历区间for ( ; __first1 != __last1; ++__first1, ++__first2)if (!__binary_pred(*__first1, *__first2))return false;//若对应元素不符合规则,返回FALSEreturn true;//至此全部符合
}//--------------------------------------------------
// lexicographical_compare and lexicographical_compare_3way.
// (the latter is not part of the C++ standard.)/*功能:Returns true if the range [first1,last1) compares lexicographically less than the range [first2,last2).
default (1)	template <class InputIterator1, class InputIterator2>bool lexicographical_compare (InputIterator1 first1, InputIterator1 last1,InputIterator2 first2, InputIterator2 last2);
custom (2)	template <class InputIterator1, class InputIterator2, class Compare>bool lexicographical_compare (InputIterator1 first1, InputIterator1 last1,InputIterator2 first2, InputIterator2 last2,Compare comp);
*/
/*
对两个序列[first1,last1)和[first2,last2)进行比较,比较操作针对两个序列对应位置上的元素进行;
并持续到:
(1)某一组对应元素不相等
(2)同时达到last1和last2(即两个序列大小相等)
(3)达到last1或last2(两个序列大小不相等)
*///版本一:默认比较操作为less
template <class _InputIter1, class _InputIter2>
bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,_InputIter2 __first2, _InputIter2 __last2) {__STL_REQUIRES(_InputIter1, _InputIterator);__STL_REQUIRES(_InputIter2, _InputIterator);__STL_REQUIRES(typename iterator_traits<_InputIter1>::value_type,_LessThanComparable);__STL_REQUIRES(typename iterator_traits<_InputIter2>::value_type,_LessThanComparable);//以下任何一个序列到达尾端,则结束,否则两序列就相应元素进行比较for ( ; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2) {if (*__first1 < *__first2)//若第一序列对应元素小于第二序列对应元素return true;//返回TRUEif (*__first2 < *__first1)//若第二序列对应元素小于第一序列对应元素return false;//返回FALSE//若两序列对应元素相等,则继续进入下一组对应元素比较}//如果第一序列已到达尾端,而第二序列还存在元素,则第一序列小于第二序列return __first1 == __last1 && __first2 != __last2;
}//版本二:用户可自行指定比较规则
template <class _InputIter1, class _InputIter2, class _Compare>
bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,_InputIter2 __first2, _InputIter2 __last2,_Compare __comp) {__STL_REQUIRES(_InputIter1, _InputIterator);__STL_REQUIRES(_InputIter2, _InputIterator);//以下任何一个序列到达尾端,则结束,否则两序列就相应元素进行比较for ( ; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2) {if (__comp(*__first1, *__first2))//若第一序列对应元素符合规则于第二序列对应元素return true;//返回TRUEif (__comp(*__first2, *__first1))//若第二序列对应元素符合规则于第一序列对应元素return false;//返回FALSE//若两序列对应元素相等,则继续进入下一组对应元素比较}//如果第一序列已到达尾端,而第二序列还存在元素,则第一序列符合规则于第二序列return __first1 == __last1 && __first2 != __last2;
}//这是针对const unsigned cahr*的特化版本
inline bool 
lexicographical_compare(const unsigned char* __first1,const unsigned char* __last1,const unsigned char* __first2,const unsigned char* __last2)
{const size_t __len1 = __last1 - __first1;//第一序列长度const size_t __len2 = __last2 - __first2;//第二序列长度//先比较长度相同的一小段/*memcmp函数的描述:原型:int memcmp ( const void * ptr1, const void * ptr2, size_t num );Compares the first num bytes of the block of memory pointed by ptr1 to the first num bytes pointed by ptr2, 
returning zero if they all match or a value different from zero representing which is greater if they do not.*/const int __result = memcmp(__first1, __first2, min(__len1, __len2));//根据返回结果result的值与0比较进行判断//result<0:第一序列小于第二序列//result>0:第一序列大于第二序列//result=0:两个序列相等return __result != 0 ? __result < 0 : __len1 < __len2;
}//针对const char*的特化版本
inline bool lexicographical_compare(const char* __first1, const char* __last1,const char* __first2, const char* __last2)
{
#if CHAR_MAX == SCHAR_MAXreturn lexicographical_compare((const signed char*) __first1,(const signed char*) __last1,(const signed char*) __first2,(const signed char*) __last2);
#else /* CHAR_MAX == SCHAR_MAX */return lexicographical_compare((const unsigned char*) __first1,(const unsigned char*) __last1,(const unsigned char*) __first2,(const unsigned char*) __last2);
#endif /* CHAR_MAX == SCHAR_MAX */
}//类似于strcmp()的泛化版本
//默认比较操作是less
template <class _InputIter1, class _InputIter2>
int __lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,_InputIter2 __first2, _InputIter2 __last2)
{
//以下任何一个序列到达尾端,则结束,否则两序列就相应元素进行比较while (__first1 != __last1 && __first2 != __last2) {if (*__first1 < *__first2)//若第一个元素小于第二序列对应的元素return -1;//则返回负值-1if (*__first2 < *__first1)//若第二序列元素小于第一序列对应元素return 1;//则返回正值1//继续遍历//若两序列对应元素相等,则继续进入下一组对应元素比较++__first1;++__first2;	}//若第二序列已到达尾端if (__first2 == __last2) {//若第一序列也同时到达尾端,表示两序列相等,则返回0;//若第一序列没到达尾端,则表示第一序列大于第二序列//则返回正值1return !(__first1 == __last1);}else {//若第一序列已到达尾端,而第二序列还没到达尾端//则返回负值-1return -1;}
}//以下是针对const unsigned char*
inline int
__lexicographical_compare_3way(const unsigned char* __first1,const unsigned char* __last1,const unsigned char* __first2,const unsigned char* __last2)
{const ptrdiff_t __len1 = __last1 - __first1;const ptrdiff_t __len2 = __last2 - __first2;const int __result = memcmp(__first1, __first2, min(__len1, __len2));return __result != 0 ? __result : (__len1 == __len2 ? 0 : (__len1 < __len2 ? -1 : 1));
}
//这是const char*特化版
inline int 
__lexicographical_compare_3way(const char* __first1, const char* __last1,const char* __first2, const char* __last2)
{
#if CHAR_MAX == SCHAR_MAXreturn __lexicographical_compare_3way((const signed char*) __first1,(const signed char*) __last1,(const signed char*) __first2,(const signed char*) __last2);
#elsereturn __lexicographical_compare_3way((const unsigned char*) __first1,(const unsigned char*) __last1,(const unsigned char*) __first2,(const unsigned char*) __last2);
#endif
}
//针对上面函数的封装
template <class _InputIter1, class _InputIter2>
int lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,_InputIter2 __first2, _InputIter2 __last2)
{__STL_REQUIRES(_InputIter1, _InputIterator);__STL_REQUIRES(_InputIter2, _InputIterator);__STL_REQUIRES(typename iterator_traits<_InputIter1>::value_type,_LessThanComparable);__STL_REQUIRES(typename iterator_traits<_InputIter2>::value_type,_LessThanComparable);return __lexicographical_compare_3way(__first1, __last1, __first2, __last2);
}__STL_END_NAMESPACE#endif /* __SGI_STL_INTERNAL_ALGOBASE_H */// Local Variables:
// mode:C++
// End:


查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 2019春阿里计算机视觉实习岗在线笔试题

    刚参加了阿里的计算机视觉实习岗的在线笔试题,人有点懵,提前半小时就交卷了。 单项选择题(10道),半小时交卷 真第一次遇见单选题有6个选项的=-=网络协议(百万级路由器的TCP协议,让你选择正确的方案) 哈希表 求解[100,999]区间内个十百位相加能被8整除的数字的个数(这个…...

    2024/4/12 16:21:20
  2. /lib64/libc.so.6: version `GLIBC_2.14' not found问题

    <备忘> 参考文章: https://my.oschina.net/zhangxu0512/blog/262275问题答疑: http://blog.sina.com.cn/s/blog_53c061270101cxxr.html转载于:https://www.cnblogs.com/crazyapple/p/5885400.html...

    2024/5/1 1:29:38
  3. MySQL中select相关语法总结(join,group by ,having, order by,union)

    1、group by相关使用group by:主要用于数据分组,也就是某一些相同的放在一组。 下面讲讲一些规定:1):如果分组列中具有null值,则null将作为一个分组返回,如果有多个null值,则它们将分为一组。2):group by自居必须出现在where子句之后,order by子句之前。3):除了聚…...

    2024/4/30 18:06:28
  4. ES中实现分页查询数据并返回想要的字段

    在日志收集系统中,最近需要通过httpclient获取es中的日志信息,所以学习了一些es的查询语句方面的用法; 分页 分页的本质 分页的本质是从“大的数据集”中取出一部分。比如10000条记录,每页10条数据。取第二页即第11条到20条数据。ES或者数据库怎么知道哪些数据是第二部分(…...

    2024/5/1 3:02:53
  5. STL 源码剖析 算法 stl_algo.h -- equal_range

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlieequal_range(应用于有序区间) -------------------------------------------------------------------------------------------------------------------------------------- 描述:利用二分查找找到一个…...

    2024/4/19 8:05:17
  6. 阿里巴巴2016前端工程师笔试题1总结

    1.浏览器在一次 HTTP 请求中,需要传输一个 4097 字节的文本数据给服务端,可以采用那些方式?正确答案为: post常见的存储方式有六种:IndexDB/Cookie/get请求/post请求/Session/StorageIndexdDB 是 HTML5 的本地存储,把一些数据存储到浏览器(客户端)中,当与网络断开时,可…...

    2024/4/29 16:17:46
  7. 看JavaScript设计模式这本书之后的收获(1)

    JavaScript是弱类型语言; JavaScript有三个原始类型:字符串类型,数值类型,布尔类型;相互之间的转换关系是toString();var a=!!num;parseFloat(),parseInt() Function.prototype.method=function(name,fn){this.prototype[name]=fn;return this; }Funnction.pro…...

    2024/5/1 1:07:14
  8. 一个对List中的数据进行分页的工具类

    在项目当中,使用分页方式分批次查询数据并渲染到页面是一种相当普遍的做法。目的是避免浏览器一次性加载过多的数据导致的页面迟缓或者崩溃。另外,在数据总量过大的情况下,一次性将内容都查询出来,查询出来的结果最初是放在内存里面的,内存也没有这么大,因此很容易导致内…...

    2024/4/26 21:04:22
  9. 根据流水号查交易

    #!/bin/bashDIR_his=/home/riskIns/hisbackup/ while read line;do ##从平台流水号文件中逐行读取流水号str1=${line:0:6} ##取出流水号前六位str2=${line:0:25} ##取出每行中的交易流水号,否者每行会附带‘$’结尾符file=${DIR_his}order_info_${str1}.sql ##根据流水号前六位…...

    2024/4/16 21:15:55
  10. IntelliJ IDEA 2019.3发布,饱受性能诟病的2019.2版本终于成为过去式

    点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!作者 | 白开水不加糖来源 | 公众号「开源中国」距离 IntelliJ IDEA 2019.3 RC 发布不过几天的功夫,目前,IntelliJ IDEA 2019.3 也已正式发布。官方表示,该版本是其旗舰 IDE 的今年第三次也是…...

    2024/4/13 0:02:11
  11. 腾讯、阿里笔试面试体会

    最近这个月参加阿里、腾讯2014实习生招聘,收获很多,得到了教训,吸收了经验,清楚了方向,现在就具体说说吧 1.阿里巴巴实习招聘:出于一颗打酱油的心情和几个小伙伴去投了简历,过了几天通知笔试,心里很虚,没什么准备,考试内容主要是网络有1题、数据结构、程序阅读题、Li…...

    2024/4/9 11:15:16
  12. STL源码剖析---shared_ptr

    目录一、 引言二、 代码实现 2.1 模拟实现shared_ptr2.2 测试用例三、 潜在问题分析 你可能还需要了解模拟实现C++标准库中的auto_ptr一、 引言与auto_ptr大同小异,shared_ptr也是一个类。可以实现多个指针指向同一个对象(引用计数)。发生拷贝的话都指向相同的内存。每使用一…...

    2024/4/13 18:16:22
  13. 记:Idea20192.2 failed to create JVM. JVM Path: xxxxx

    破解需要修改了:bin/idea64.exe.vmoptions 参数,导致启动报错:出现此原因提示是可能未设置环境变量,但是实际上已经设置了,后来发现是由于bin/idea64.exe.vmoptions文件格式问题导致的。bin/idea64.exe.vmoptions 默认格式为 UTF-8, 但是使用windows记事本打开修改后变成…...

    2024/4/12 16:21:45
  14. redis缓存分页数据

    在我们开发项目的过程中,经常会对数据做分页展示,如果每次请求都去查询数据库,当访问量增大时,势必会加重数据库的负载,降低数据库性能。然而,有些数据的是极少变动的,或者说变动的频率不是很高,这时如果将这些数据进行缓存,不仅可以提高程序性能,还能降低数据库的负…...

    2024/4/26 18:58:16
  15. 阿里巴巴数据挖掘笔试题摘

    (此题至今不懂…其答案)此题也不解,坚定不移地选C...

    2024/4/12 16:21:20
  16. Extjs grid panel,设置了scroll: 'horizontal',滚动条不生效

    公司开发,前端框架用的extjs,数据量大又没有分页的时候需要滚动条,但是给grid panel设置了scroll: horizontal,滚动条依然不生效。网上找了解决方案,实测生效解决,记录如下:scroll:false, autoScroll:true, viewConfig: { style: { overflow: auto, overflowX: hidden…...

    2024/4/13 0:02:22
  17. IntelliJ IDEA 2019.3 发布,性能更牛逼!

    距离 IntelliJ IDEA 2019.3 RC 发布不过几天的功夫,目前,IntelliJ IDEA 2019.3 也已正式发布。官方表示,该版本是其旗舰 IDE 的第三次也是最后一个主要版本。据透露,在 IntelliJ IDEA 的这个主要版本上,该开发团队专注于 IDE 的性能和整体质量。期间,IntelliJ IDEA 团队与…...

    2024/4/20 3:29:54
  18. TP5分页类使用——超级简单好用

    首先知道最原始的分页如何实现。页面传进来一个p表示当前请求的页码,控制器接受到参数,组装到sql中,并且配置page的配置信息,例如,每页显示多少数据,然后利用sql先查出总个数,然后利用分页关系组装sql,查出来之后的得到对应的数据,接下来开始解析分页按钮等信息的渲染…...

    2024/4/12 16:21:45
  19. JS设计模式栏目简要说明

    简概该分类下的所有内容均来自阅读 张荣铭前辈的书籍JavaScript设计模式的总结 该分类源码github: https://github.com/hyuanyuanlisiwei/DesignPattern2...

    2024/4/12 16:21:20
  20. STL源码剖析-序列式容器之list和slist

    一.list1.list概述list是双向链表,对于任何位置的元素的插入或元素移除,list永远是常数时间.2.list的节点list本身和list节点是不同的数据结构,需要分开设计.STL list的节点结构:template <class T> struct __list_node { typedef void* void_pointer; void…...

    2024/4/12 16:22:35

最新文章

  1. DN-DETR的原理和源码解读

    在decoder中: query就是代表tgt信息, 于是用gtnoise生成几个known_query,known_query无需匈牙利直接和gt匹配.使得模型可以去噪. 一些骚操作: 1.box偏移不能太过,否在假如跑到别的gt上去了,那就说不通了. 解决方法:box的xy偏移小于wh的一半就好啦 2.decoder的自注意力,ori_que…...

    2024/5/1 3:52:51
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 开启 Keep-Alive 可能会导致http 请求偶发失败

    大家好&#xff0c;我是蓝胖子&#xff0c;说起提高http的传输效率&#xff0c;很多人会开启http的Keep-Alive选项&#xff0c;这会http请求能够复用tcp连接&#xff0c;节省了握手的开销。但开启Keep-Alive真的没有问题吗&#xff1f;我们来细细分析下。 最大空闲时间造成请求…...

    2024/4/30 6:34:01
  4. Web大并发集群部署之集群介绍

    一、传统web访问模型 传统web访问模型完成一次请求的步骤 1&#xff09;用户发起请求 2&#xff09;服务器接受请求 3&#xff09;服务器处理请求&#xff08;压力最大&#xff09; 4&#xff09;服务器响应请求 传统模型缺点 单点故障&#xff1b; 单台服务器资源有限&…...

    2024/4/30 2:45:51
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/29 23:16:47
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57