C++入门

C++基本语法

头文件

include<bits/stdc++.h> //万能头

#include <cmath> // 相当于C语⾔⾥⾯的#include <math.h>
#include <cstdio> // 相当于C语⾔⾥⾯的#include <stdio.h>
#include <cstring> // 相当于C语⾔⾥⾯的#include <string.h>

#include<iostream> //标准输入输出,就是cin,cout的使用
#include <algorithm> //STL通用算法
#include <map>       //STL 映射容器
#include <queue>      //STL队列容器
#include <stack>      //STL堆栈容器  
#include <set>       //STL 集合容器
#include <string>     //字符串类
#include <vector>     //STL动态数组容器

using namespace std

写在int main(){}之前。

输入输出

cin>>n;//等同于scanf("%d",&n);
cout<<n;//等同于printf("%d",n);

和c不同的定义常量/变量

auto(自动判断)

auto x = 100; // x是int变量
auto y = 1.5; // y是double变量

const定义常量

类似于c中的define。

const int a=100;

bool变量

bool a=1;//true
bool b=0;//false

string 定义字符串

  1. 只能用cin和cout,不能用scanf或printf。
  2. 但⽤ cin 读⼊字符串的时候,是以空格为分隔符的,如果想要读⼊⼀整⾏的字符串,就需要⽤ getline函数。
string a;
getline(cin,a);
  1. 字符串的拼接用“+”。
  2. s的长度用s.length()获取。
  3. 截取某个字符串中的⼦串:substr函数
string s2 = s.substr(4); // 表示从下标4开始⼀直到结束
string s3 = s.substr(5, 3); // 表示从下标5开始,3个字符

引用/传值

在变量之前加&才会和c一样对引用的变量进行操作。而不加&就只是传值。

void func(int &a) { 
	a = 99; 
}
int main() 
{
	int n = 0;
	func(n); // n由0变成了99
} 


// 传⼊的是0这个值,并不会改变main函数中n的值
void func(int a) { 
	a = 99; 
}
int main() 
{
	int n = 0;
	func(n); //n还是0,不改变
} 

STL库

容器

  1. vector 动态数组
    头文件#include < vector >
vector <int> vec;//定义动态数组,不分配大小;

vector <int> vec;//定义长度为10,值都为0;

vector<int> vec(100, 9);// 把100⻓度的数组中所有的值都初始化为9;

vector<int> vec;
vec.resize(8); //先定义⼀个vector变量v1,然后将⻓度resize为8,默认这8个元素都是0

常用方法

a.push_back(i);//在vector的最后增加一个值;
a.pop_back(i);//移除vector的最后一个元素;
a.size();
a.front();
a.back();
a.begin() //指向容器的第⼀个元素
a.end() //指向容器的最后⼀个元素的后⼀个位置
  1. set集合
    set 里面的各元素是各不相同的且 set 会按照元素进行从小到大排序。
set<int> s;
s.insert(1); // 向集合s⾥⾯插⼊⼀个1;
s.erase(1); // 删除集合s中的1这个元素;
  1. stack栈
stack<int> s; // 定义⼀个空栈s
	for (int i = 0; i < 6; i++) {
		s.push(i); // 将元素i压⼊栈s中
	}
	cout << s.top() << endl; // 访问s的栈顶元素
	cout << s.size() << endl; // 输出s的元素个数
	s.pop(); // 移除栈顶元素
  1. queue队列
queue<int> q; // 定义⼀个空队列q
	for (int i = 0; i < 6; i++) {
		q.push(i); // 将i的值依次压⼊队列q中
	}
	cout << q.front() << " " << q.back() << endl; // 访问队列的队⾸元素和队尾元素
	cout << q.size() << endl; // 输出队列的元素个数
	q.pop(); // 移除队列的队⾸元素
  1. map映射
    键值对,自动按照键从小到大排序。
map<string, int> m; // 定义⼀个空的map m,键是string类型的,值是int类型的;
m[a]=10;

for (auto it = m.begin(); it != m.end(); it++) {
 		cout << it->first << " " << it->second << endl;
 	}// ⽤迭代器遍历,输出map中所有的元素,键⽤it->first获取,值⽤it->second获取;
 	
 	// 访问map的第⼀个元素,输出它的键和值
 	cout << m.begin()->first << " " << m.begin()->second << endl;
 	// 访问map的最后⼀个元素,输出它的键和值
 	cout << m.rbegin()->first << " " << m.rbegin()->second << endl;
 	// 输出map的元素个数
 	cout << m.size() << endl
  1. unordered_map和unordered_set不会对元素排序,超时的时候可以试一下~

基于范围的for循环

适用于各种STL容器

// v是⼀个int类型的vector容器
for (auto i : v)
	cout << i << " ";
// 上⾯的写法等价于
for (int i = 0; i < v.size(); i++)
	cout << v[i] << " ";

sort 函数

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
	vector<int> v(10);
    for (int i = 0; i < 10; i++) {
		cin >> v[i];
	}
	sort(v.begin(), v.end());//v从⼩到⼤排列
	int arr[10];
	for (int i = 0; i < 10; i++) {
		cin >> arr[i];
	}
	sort(arr, arr + 10);
	return 0; 
}

to_string方法

将别的类型的变量转换为string类型的变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值