C转C++简单教程

发布于:2025-02-18 ⋅ 阅读:(88) ⋅ 点赞:(0)

一、思维导图

二、STL篇

1.vector

vector--矢量向量、动态数组、不定长数组

#include<iostream>
#include<vector>
using namespace std;
int main(){
	//定义了一个int类型的空数组v,数组大小为0 
	vector<int> v;
	//定义了一个int类型的大小为10的数组,元素值默认为0 
	vector<int>v1(10);
	//数组值全为1
	vector<int>v2(10,1);

	//为数组分配大小
	v.resize(10); 
	//为数组赋值
	for(int i=0;i<10;i++){
		v[i]=i;
	} 
	//输出数组元素 
	for(int i=0;i<10;i++){
		cout<<v[i]<<" ";
	}
	//数组末尾添加新的元素 11
	v.push_back(11); 
	cout<<endl;
	//输出数组长度 
	cout<<v.size()<<endl;
	//迭代器,v.begin()指向v[0],v.end()指向最后一个元素的后面一位 
	for(auto p=v.begin();p!=v.end();p++){
		cout<<*p<<" ";
	} 
	return 0;
}

2.set

#include <iostream>  
#include <set>       
using namespace std;
int main(){
    set<int> s;
    //插入
    s.insert(2);
    s.insert(1);
    s.insert(3);
	//set中的存储会自动排好序 
    for(auto p = s.begin(); p != s.end(); ++p){
        cout << *p << " ";
    }
	
    //查找数据2在集合中的位置,返回值为指针 
	cout<<(s.find(2)!=s.end())<<endl;//返回false 
	cout<<(s.find(4)!=s.end())<<endl;//返回true 
	//删除
	s.erase(1); 
    return 0;
}

3.map(键值对)

#include<iostream>
#include<map>
using namespace std;
int main(){
	//创建map,键为string类型,值为int类型 
	map<string,int>m;
	m["hello"]=1;
	m["world"]=2;
	//根据已知键访问对应的值,若不存在就返回0 
	cout<<"hello:"<<m["hello"]<<endl;
	
	//遍历
	for(auto p=m.begin();p!=m.end();p++){
		cout<<p->first<<":"<<p->second<<endl;
	}
	//获取长度
	cout<<"map的长度为:"<<m.size(); 
	return 0;
}

4.stack(栈)

#include<iostream>
#include<stack>
using namespace std;
int main(){
	
	//创建
	stack<int>s;
	//入栈
	s.push(2);
	s.push(1);
	s.push(3);
	//出栈
	s.pop();
	//访问栈顶
	cout<<s.top()<<endl;
	//获取长度
	cout<<"该栈的长度为:"<<s.size()<<endl; 
	return 0;
} 

5.queue(队列)

#include<iostream>
#include<queue>
using namespace std;
int main(){
	//创建队列
	queue<int> q;
	//队尾添加元素 
	for(int i=0;i<10;i++){
		q.push(i);
	}
	//获取队首队尾元素 
	cout<<"队首为:"<<q.front()<<endl<<"队尾为:"<<q.back()<<endl;
	//出队 
	q.pop();
	//获取队长度
	cout<<"该队的长度为:"<<q.size()<<endl; 
	return 0;
}

6.unordered_map和unordered_set

        这两个其实就是不会排序的 map(键值对)和set(集合),它们省去了排序的过程,如果刷题的时候超时了,可以使用这两个。

#include<iostream>
#include<unordered_map>
#include<unordered_set>
using namespace std;
int main(){
	unorder_map<string,int>m;
	unorder_set<int> s;
	//存储没有顺序 
	s.insert(1);
	s.insert(2);
	s.insert(3);
	
	m["hello"]=1;
	m["world"]=2;
	m["a"]=3;
	m["ni"]=4;
	m["hao"]=5;
	for(auto p=s.begin();p!=s.end();p++){
		cout<<*p<<endl;
	} 
	for(auto p=m.begin();p!=m.end();p++){
		cout<<p->first" "<<p->second<<endl;
	}
	return 0;
	
}

7.位运算bitset

#include<iostream>
#include<bitset>
using namespace std;
int main(){
	//表示5个二进制位,初始化为0 
	bitset<5>b; 
	//用六位二进制位表示19  10011 
	bitset<6>b1(19);  
	//s为字符串,在字符串前面补0凑齐位数
	string s="1011";
	bitset<8>b2(s);
//	从字符串s的第3位字符截取5个字符 
	bitset<8>b3(s,3,5);
	cout<<b<<endl<<b1<<endl<<b2<<endl;
	//最低位为b[0] 
//	for(int i=0;i<b.size();b++){
//		cout<<b[i]<<" ";
//	} 
	cout<<"是否有1:"<<b1.any()<<endl;
	cout<<"是否不存在1:"<<b1.none()<<endl;
	cout<<"1的个数:"<<b1.count()<<endl;
	cout<<"b1中元素个数:"<<b1.size()<<endl;
	cout<<"下标为i的元素是不是1"<<b1.test(0)<<endl;
	//所有位归零
	b1.reset();
	//指定位归零
	b1.reset(2);
	//所有位取反
	b1.flip();
	//指定位取反 
	b1.flip(3); 
	//转换为unsigned_long类型
	unsigned_long a=b1.to_ulong(); 
	return 0;
} 

8.sort函数与cmp函数

#include<iostream> 
#include<algorithm>
#include<vector>
using namespace std;
struct stu{
	string name;
	int age;
};
bool cmp(stu a,stu b){
	//年龄不同,从小到大 
	if(a.age!=b.age)
	
		return a.age<b.age;
	//年龄相同,按照名字ascii值从小到大 
	else
		return a.name<b.name;
}
int main(){
	
	stu s[3];
	for(int i=0;i<3;i++){
		cin>>s[i].name>>s[i].age;
	}
	sort(s,s+3,cmp);
	for(int i=0;i<3;i++){
		cout<<s[i].name<<" "<<s[i].age<<endl;
	} 
	return 0;
}

9.cctype

三、C++11的新特性

1.auto声明

2.基于范围的for循环

3.to-string

4.stoi stod


网站公告

今日签到

点亮在社区的每一天
去签到