刷题常用函数

Long23 / 2023-05-06 / 原文

🍅 sort()

template< class RandomIt, class Compare >
constexpr void sort( RandomIt first, RandomIt last, Compare comp );

🍅 max()

template<class T, class Compare> 
const T& max(const T& a, const T& b, Compare comp)
{
    return (comp(a, b)) ? b : a;
}

🍅 accumulate()
有三个参数(前三个)和四个参数的版本

template<class InputIt, class T, class BinaryOperation>
constexpr // since C++20
T accumulate(InputIt first, InputIt last, T init, BinaryOperation op);

🍅 std::vector<T,Allocator>::insert

iterator insert( const_iterator pos, size_type count, const T& value );
template< class InputIt >
constexpr iterator insert( const_iterator pos, InputIt first, InputIt last );

🍅 std::vector<T,Allocator>::assign

例:

vector<int> nums{1,2,5,3,-9,5,3};

//非降序 非升序排序
sort(nums.begin(),nums.end());
sort(nums.begin(),nums.begin()+3,greater<>());

//两数间较大值
int max_num = max(2,3);

//累加, 基数为0
int sum = accumulate(nums.begin(),nums.begin()+4,0);
//累乘, 基数为1
int sum = accumulate(nums.begin(),nums.begin()+4,1,std::multiplies<int>());

//用于vector
//在迭代器指向的位置前插入一个2,返回新插入2的位置
auto it = nums.begin();
it = nums.insert(it,2);  //2,1,2,5,3,-9,5,3
//插入3个2
nums.insert(it,2,5);  //5,5,2,1,2,5,3,-9,5,3
//插入一段东西, 返回这一段东西的第一个元素的位置
vector<int>nums2(2,9);
nums.insert(it+1,nums2.begin(),nums2.end());  //5,9,9,5,2,1,2,5,3,-9,5,3

//替换内容
nums.assign(5,1);  //1,1,1,1,1
nums.assign(nums2.begin(),nums2.end());  //9,9