C++学习

1.交换两个变量a和b

我最初在实现的时候,编写下面的函数

void swap_int(int a, int b)
{
	int t = a;
	a = b;
	b = t;
}

这是最典型的错误,这是因为它只是交换了形参,而并未改变真实的实参
正确的实现应该是这样子的

void swap_int(int &a, int &b)
{
	int t = a;
	a = b;
	b = t;
}

其实在C++标准库里有swap的实现:在C++11中,此函数不再在头文件algorithm中定义,而是在在头文件utility中定义

2.sort
  • 2.1简介
    1.sort函数可以三个参数也可以两个参数,必须的头文件#include<algorithm>using namespace std;
    2.它使用的排序方法是类似于快排的方法,时间复杂度为 n ∗ l o g 2 n n*log_{2}{n} nlog2n
    3.Sort函数有三个参数:(第三个参数可不写)
    (1)第一个是要排序的数组的起始地址
    (2)第二个是结束的地址(最后一位要排序的地址)
    (3)第三个参数是排序的方法,可以是从大到小也可是从小到大,还可以不写第三个参数,此时默认的排序方法是从小到大排序
  • 2.2前两个参数
vector<int> arr = {1, 5, 8, 9, 6, 7, 3, 4, 2, 0};
sort(arr.begin(), arr.end()); 
// 输出 0 1 2 3 4 5 6 7 8 9
  • 2.3三个参数,逆序输出
bool compare(int a, int b)
{
    // 降序排序函数
    return a > b;
}
vector<int> arr = {1, 5, 8, 9, 6, 7, 3, 4, 2, 0};
sort(arr.begin(), arr.end(), compare); 
// 输出 9 8 7 6 5 4 3 2 1 0
  • 2.4三个参数,二维vector,按每一个vector元素的第1个数升序排序
bool compareInterval(vector<int> i1, vector<int> i2) 
{
	// 升序排序
    return (i1[0] < i2[0]); 
}
vector<vector<int>> arr2 = {{6, 8}, {1, 9}, {2, 4}, {4, 7}};
sort(arr2.begin(), arr2.end(), compareInterval);
int l = arr2.size();
for (int i = 0; i < l; i++) 
	cout << "[" << arr2[i][0] << "," << arr2[i][1] << "] "; 
// 输出 [1,9] [2,4] [4,7] [6,8]

3.vector使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值