C++基础语法速通

本文详细介绍了C/C++语言中的基本概念,包括布尔变量的使用、字符串操作(如`std::string`和`substr`)、结构体与引用、`vector`和`set`容器、`map`的键值对功能、`bitset`与位运算、`sort`函数以及C++11中的`auto`声明和基于范围的for循环。
摘要由CSDN通过智能技术生成

参考:【C语言 转 C++ 简单教程】 https://www.bilibili.com/video/BV1UE411j7Ti/?p=12&share_source=copy_web&vd_source=b4a9adec1e790e088162134b69d77d6c 

stl 

头文件

c:

#include <string.h>

c++

#include <cstring>

bool 变量

#include <iostream>
using namespace std;
int main(void) {
	bool flag = true;
	bool flag2 = -1;
	bool flag3 = 0;
//0 为false,非0为true;


	cout << flag<<" " << flag2<<" " << flag3;
	//endl='\n'

}

一些函数

# include<iostream>
# include<cstring>//string头文件
using namespace std;
int main(void) {

	string s1 = "HELLO";
	string s2 = "WORLD";
	string s3 = s1 + s2;
    s1.length()//取长度
	cin >> s1;//cin只能输入单词
	cout << s1<<'\n';
	cout << s1.length()<<'\n';//输出长度
	string s4 = s1.substr(4, 2);//第5个开始的两个字母
	cout << s4;
	string s5 = s1.substr(6);//从第7个开始的全部
	cout << s5;

结构体

c语言中:

typedef struct Student{

}

Student a;//只有typedef了,才可以直接用struct后面的字母作为类型

c++:

struct Student{

}

Student a;//不用typedef,直接用struct后面的字母作为类型

&引用,相当于c语言的传引用 

vector

s1.length();//string的长度

a1.size();//vector的长度

vector头文件

#include <vector>

vector 长度: 

#include <iostream>
#include <vector>
using namespace std;
int main (void){
vector <int> v;//定义变量
cout <<v.size()<<'\n';
    
return 0;
}

resize定义vector: 

#include <iostream>
#include <vector>
using namespace std;
int main (void){
vector <int> v;//定义变量
v.resize(10);//(10,0)
//用v[i]=分配内存,以下实例for的特殊情况
int i;
for (i=0;i<10;i++)
v[i]=i;//存入数据语法
for (i=0;i<10;i++)
cout<<v[i]<<" ";
    
return 0;
}

分配内存,如果数字全一样,则在定义v的时候直接定义内容:

#include <iostream>
#include <vector>
using namespace std;
int main (void){
vector <int> v(10,2);//(10)相当于(10,0)
return 0;
}

push_back 末尾添加新数: 

v.push_back(11);//v.push_back(要添加的数字);

push_back其实也可以用于填值,代替[ ]的写法

for (i=0;i<10;i++)
v.push_back(i);

 迭代(输出的第二格式,用不了输入)

因为看形式就能看出来它需要数组先存在

输出,第二种如下,:

for(auto p=v.begin();p!=v.end();p++)//p是指针,s.begin(),s.end()返回的都是地址
cout<<*p<<" ";//解指针得数值

v.end的位置:

eg:

在8后面的位置

set

set是什么

set是集合,里面元素不相同,set会自动从小到大排序

set头文件

#include <set>

创建集合

set <int> s;//与vector不同,后面不能加括号 原因:set表示集合 (10)=(10,0)不合理,(10,2)不符合集合定义:互异

insert插入元素 


s.insert(1);
s.insert(2);
s.insert(3);//{1,2,3}

查找 :s.find(data)

//1 2 3

s.find(2);//find返回的是数值的位置,数字2的位置是2
s.find(4);//第4个数字上的位置=s.end()

 迭代

for(auto p=s.begin();p!=s.end();p++)
cout<<*p<<" ";

查找与bool值 

位置与s.end()相等意味着没找到,返回0;

不等等于找到了,返回1;

cout<<(s.find(2)!=s.end())<<"\n";//(2位置处的数字)满足 不等于(空)返回1
cout<<(s.find(4)!=s.end())<<"\n"//(4位置上的数字=没有=空)不满足 不等于(空)返回0

 删除:s.erase(data)

s.erase(2);

代码运行实例:

map 

map是什么

map是键值对,自动从小到大排序

eg:

从大到小:字母的前后顺序,不是值的大小

其中:ha与hello:h一样,a在e前面,所以ha在hello前面

头文件

#include <map>

定义

map <string,int> m;

放元素

m["hello"]=2;

访问

cout<<m["hello"];//存在hello返回值,不存在返回0

迭代器 +结构体指针

for(auto p=m.begin();p!=m.end();p++)
cout<<p->first<<":"<<p->second;//map相当于结构体,结构体指针的用法见http://t.csdnimg.cn/d8vV8

一些代码实例:

#include <iostream>
#include <map>
using namespace std;
int main (void){
map <string,int>m;
m["hello"]=2;
m["world"]=3;
cout<<m["hello"]<<" "<<"hello"<<"\n";
    
for(auto p=m.begin();p!=m.end();p++)
cout<<p->first<<":"<<p->second<<"\n";
   
return 0;
}

stack 

位运算bitset

bitset<5> b (19);//5进制数组,十进制写法转化成二进制
//11101,b[0]=1,b[1]=0...从低到高
cout<<b<<"\n";//11101
cout b[0]<<"\n";//1
bitset<5> b ;//5进制数组,初始化为0
bitset<5> b ("11");//二进制写法,最低两位是11,输出00011

处理 (摘要—判断返回bool值

第一个第二个返回bool值(0或1)

取反 

归零

unsigned long类型转换 

 

创建新a,输出a

m=0110101//先定义m
bitset<5>b(m,0,5)//从第0位开始,从前往后数5个数字,转化为二进制,本就是二进制就照抄
//=biteset<5>b("01101")

sort函数 

sort的作用

从小到大排序

头文件

#include <algorithm>

sort用法

sort(m.begin(),m.end());//从第一个元素的位置排到最后一个+1个元素的位置(不存在)所以sort的排序对象是左闭右开区间

cmp 


bool cmp(intx,inty)
{
return x>y;//若返回值为假,则交换顺序,(不能有“=”)

}

int main( ){

.
.
.//定义m

sort(m.begin(),m.end(),cmp);
for(auto p=m.begin();p!=m.end();p++)
cout <<*p<<" ";
}
 实例:
#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;
    else //年龄相同,首字母从小到大排序
      return a.name<b.name;
       }

int main (void){
    stu s[3];
    for(int i=0;i<3;i++)
    cin>>s[i].name>>s[i].age;//输入
    sort(s,s+3,cmp);//在数组里A+i=&A[i]
    //不是vector,s是s[0]的位置=s.begin(),s+3是末尾s[2]的后一位的位置=s.end() 符合sort的使用要求
    for(int i=0;i<3;i++)
        cout <<s[i].name<<" "<<s[i].age;

}

 头文件cctype-与char的各种处理有关

#include <cctype>

int main (){
char A;



}

各种处理函数(摘要-判断返回bool值 

运行实例1

运行实例2:

 第四个判断是不是字母或者数字 不返回0即代表是

c++11 auto声明

auto 的作用1-万能类型

它会自己判断数据的类型然后存入变量中 完全不用操心用int/float还是double等

注意auto使用时候一定初始化

auto a=19;
auto b=1.8;
cout<<a<<" "<<b;//正确
auto c;
cin>>c;//报错

auto的作用2-迭代器

由上面内容可知,map,set,vector均可用迭代器,其中map要搭配指针 

c++11 基于范围的for循环 

int a[4]={1}//1,0,0,0
for(int i:a);//i访问a,每次访问一个数字,然后执行一次下列输出操作,循环此过程直到全部输出
cout<<i<<" ";//输出的就是数组a

访问a并且让每一个元素都加1

for(int i:a){
i++;
cout<<i;
}
for(int i:a){
i++;
}
//传值,此时a没有改变,所以接下来的过程输出的是原数组
for(int i:a){
cout<<i<<" ";}
for(int &i:a){
i++;
}
//传指针,改变
for(int i:a){
cout<<i<<" ";}

上述int可以改变成auto

stl均可以用

c++ to string 

 头文件 #include <cstring>

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值