C++刷题过程中的一些 tricks(持续更新)

本文介绍了C++中关于map和unordered_map的遍历方法、变量数据类型的快速转换、vector容器的多种访问及排序方式,并展示了如何获取vector中的最大和最小值,以及根据ordered_map中的value进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 遍历 map,unordered_map

// 遍历之后返回的自动类型是一个pair,注意此处map的话返回有顺序的,而unordered_map 没有顺序
map<int, char> Map; 
for (auto & element : Map){
    printf("%d, %c\n", element.first, element.second);
}

2. varibale 数据类型的快速转换

char -> int

string a = '1'; 
int b = a - '0';

int -> string

int a = 12345;
string b = to_string(a);

3. 初始化固定维度的 vector<vector<\int>>

vector<vector<int>> A(m, vector<int>(n, 0))

4. vector 容器的几种访问方式(包括逆序访问)

    for (vector<int> :: iterator cur = input.begin(); cur != input.end(); cur++){
        cout << (*cur) << " " ;
    }
    cout << endl;
    for (int i = 0; i < input.size(); i++){
        cout << input[i] << " ";
    }
    cout << endl;
    for (auto element : input){
        cout << element << " ";
    }
	// 逆序访问
	#include <algorithm>
	reverse(input.begin(), input.end());
	// 之后可以利用上述方法进行访问
	// 举几个例子:
	string str="hello world , hi";
	reverse(str.begin(),str.end());//str结果为 ih , dlrow olleh
	vector<int> v = {5,4,3,2,1};
	reverse(v.begin(),v.end());//容器v的值变为1,2,3,4,5
}

5. vector 的排序

 // c++中vector的排序函数:sort()

    int s[] = {1,6,3,2,5};
    vector<int> vec(s, s+5);
    //正向排序:按照从小到大的顺序排序
    sort(vec.begin(), vec.end());
    for(vector<int>::iterator it=vec.begin(); it!=vec.end(); it++){
        cout<<*it<<" ";
    }
    cout<<endl;

    //逆向排序:按照从大到小的顺序进行排序
    // 两种方式
    //sort(vec.rbegin(), vec.rend());
    sort(vec.begin(), vec.end());
    reverse(vec.begin(), vec.end())
    for(vector<int>::iterator it=vec.begin(); it!=vec.end(); it++){
        cout<<*it<<" ";
    }
    cout<<endl;

6. 返回vector中的最大和最小值

# include<iostream>
# include<algorithm>
# include<vector>
using namespace std;
int main() {
	vector<int> temp{ 10,20,98,1,-3,111 };
	int max = *max_element(temp.begin(), temp.end());
	int min = *min_element(temp.begin(), temp.end());
	cout << "max element: " << max << endl;
	cout << "min element: " << min << endl;
}

7. 根据ordered_map 中的value进行排序

// 降序,如果改为升序只需 a.second > b.second
sort(answer_temp.begin(), answer_temp.end(), 
[=] (pair<int, int>& a, pair<int, int>& b) { return a.second > b.second; });

map 默认根据 key 值进行排序。
vector<pair<int,int>> 直接进行排序,默认根据 key 值进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值