1.Visual Studio头文件
相当于万能头文件<bits/stdc++.h>
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include<string.h>
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<algorithm>
#include <map>
2. 初始化
//哈希表
#include <unordered_map>
map<string, int> dict;
std::unordered_map<std::string, int> myMap;
vector< int> vec;
vector<vector< int> >vec2;
//动态开辟一维数组
int *a=new int[n];
//动态开辟二维数组
int **arr = new int*[width];
for(int i = 0; i < width; ++i)
arr[i] = new int[height];
//一维vector
vector<int>array(len);
//二维vector
std::vector<std::vector<double>> dp(row, std::vector<double>(m, 0.0));
3.特殊函数用法
swap
swap(a,b);
//交换两个整数,浮点数,结构体...
find
if (find(b.begin(), b.end(), word) == b.end()) {
b.push_back(word);
}
sort
bool cmp(node a, node b){
return a.x > b.x;
}
//sort(首元素地址,尾元素地址的下一个地址(必填),比较函数(非必填));
sort(a.begin(),a.end(),cmp);
4.哈希表用法
myMap["apple"] = 10;
// 遍历
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
// 检查某个键是否存在
if (myMap.count("banana") > 0)
// 删除某个键值对
myMap.erase("apple");
// 清空哈希表
myMap.clear();
5.vector用法
//创建
vector<int> vec;
//尾插
vec.push_back(a);、
//删除最后一个元素
vec .pop_back()
//迭代器访问元素
for(it=vec.begin();it!=vec.end();it++)
//在第i个元素后面插入a
vec.insert(vec.begin()+i,a);
//删除元素
//删除第3个元素
vec.erase(vec.begin()+2);
//删除区间[i,j-1]
vec.erase(vec.begin()+i,vec.end()+j);
//大小
vec.size();
//清空
vec.clear()
//元素翻转
#include<algorithm>
reverse(vec.begin(),vec.end());
//排序
#include<algorithm>
sort(vec.begin(),vec.end());
6.string类函数
/拼接
c= a + b
//字符串输入输出
cin >> s; //回车作为结束输入的标志
//读取一行字符
//a[n] 则最多读取 n-1个字符
cin.getline(a,8);
//长度
s.length()
//拷贝
#include<cstring>
strcpy(a,s.c_str());
//字符数组转字符串
string s(a);
//字符串的比较 ,相等为0,不等为1 (或者循环遍历)
strcmp(str1,str2)
//查找字符串的子串
cout<<s.find("tr")<<endl;// 1,找到
//替换字符串 replace(起始位置,个数,"替换内容")
s.replace(3,1,"XI");
//删除子串
s.erase(position,nummer); //起始位置,删除个数
//添加子串(位置,增加的字符串)
s.insert(5,"aaa");
//反转函数
#include<algorithm>
reverse(s.begin(),s.end());
//sort 排序
#include<algorithm>
sort(s.begin(),s.end());
//字符串转数字
a=stoi("123")
//数字转字符串
c=to_string(123)
//字符串截取
string sub1 = str.substr(0, 5); // 从0位置开始,长度为5的子串
string sub2 = str.substr(7); // 从7位置开始,到字符串末尾的子串
//字符串转为字符
ch = str[0];
ch = str.at(3); // 使用at()函数获取字符串中的第四个字符
//字符串流类
string str = "123 456 789";
stringstream ss(str); // 定义一个字符串流
int num;
while (ss >> num) { // 逐个读取每个整数
cout << num << endl;
}
//读取一行输入
string input1, input2;
getline(cin, input1);
getline(cin, input2);
//求出字符串中字符的个数(不允许重复)
int countUniqueChars(string str) {
set<char> charSet;
// 将每个字符添加到set中
for (char c : str) {
charSet.insert(c);
}
return charSet.size();
}
//求出字符串中没有重复的字符的个数
int countUniqueChars(string str) {
unordered_map<char, int> charCount;
// 统计每个字符出现的次数
for (char c : str) {
charCount[c]++;
}
int uniqueCount = 0;
// 查找没有重复的字符个数
for (char c : str) {
if (charCount[c] == 1) {
uniqueCount++;
}
}
return uniqueCount;
}
//求字符串中字符a-z(不允许重复)的个数
int countUniqueChars(string str) {
set<char> charSet;
// 遍历字符串中的每个字符,将其加入set容器中
for (char c : str) {
if (c >= 'a' && c <= 'z') { // 只统计a-z之间的字符
charSet.insert(c);
}
}
return charSet.size();
}