当前位置: 首页 > news >正文

cpp language 语法

cpp language 语法

总览-思维导图

img

vector(动态数组)

1.在使用vector时,要使用相应的头文件

#include<vector>

2.创建数组

定义:vector<数据类型> v;v.resize(10);for(int i= 9=0;i < 10;i++)v[i] = i;for(int i =0;i < 10;i++)cout<<v[i];cout<<v.size()<<endl;//10v.push_back(10);//将10这个元素放在数组的最后,长度也会加一定义: vector<int> v(10,2);//创建十个元素空间,每一个元素初始化为2vector<int> v(10); = vector<int> v(10,0);//创建十个元素空间,每一个元素初始化为0

3.迭代器

#include<iostream>
#include<vector>
using namespace std;
int main()
{vector<int> box(10,2);box.push_back(11);for(auto p = box.begin();p != box.end();++p){cout<<*p<<" ";//*p 很重要,看好再写}
}
打印结果:2 2 2 2 2 2 2 2 2 2 11//此时begin指向数组的第一个元素,end指向数组最后一个元素的后面的第一个位置(不在数组中了)

set(集合)

1.在使用set时,要使用相应的头文件

#include<set>

2.使用

#include<iostream>
#include<set>
using namespace std;
int main()
{set<int> s;//创建集合s.insert(2);s.insert(1);s.insert(3);//往集合中储存数据for(auto p = s.begin();p != s.end();++p){cout<<*p<<" ";}   //1 2 3cout<<endl;cout<<(s.find(2) != s.end())<<endl;//set.find() 返回的是指针 1cout<<(s.find(4) != s.end())<<endl;//0s.erase(1);cout<<(s.find(1) != s.end())<<endl;//0
}

set中的元素会自动按照从小到大的顺序进行排序

map(键值对)

1.在使用map时,要使用相应的头文件

#include<map>

2.使用

#include<iostream>
#include<map>
using namespace std;
int main()
{map<string,int> mymap;//定义键值对mymap["hello"] = 2;mymap["world"] = 3;mymap["hallo"] = 5;//输出根据ASCII码的顺序进行从小到大排列for(auto p=mymap.begin();p!= mymap.end();++p)cout<<p->first<<" "<<p->second<<endl;  //first指的是string,second指的是intreturn 0; } 
//打印结果
hallo : 5
hello : 2
world : 3

stack(栈)

1.在使用stack时,要使用相应的头文件

#include<stack>

2.使用

#include<iostream>
#include<stack>
using namespace std;
int main()
{stack<int> mystack;mystack.push(1);mystack.push(2);mystack.push(3);mystack.pop();//弹出顶部元素,出栈cout<<mystack.top()<<endl;//访问顶部元素cout<<mystack.size();//大小return 0; } 
//打印结果
2
2

注意:栈不可以使用迭代器进行遍历,因为不存在begin和end

queue(队列)

1.在使用queue时,要使用相应的头文件

#include<queue>

2.使用

#include<iostream>
#include<queue>
using namespace std;
int main()
{queue<int> my;//定义,创建队列for(int i =1;i<=10;i++)my.push(i); //入队列cout<<my.front()<<endl;//访问队首 1cout<<my.back()<<endl;//访问队尾 10my.pop();cout<<my.front()<<endl;// 访问队首 2cout<<my.back()<<endl;//访问队尾 10return 0;
}

unordered_set 和 unordered_map

1.在使用时,要使用相应的头文件

#include<unordered_set>
#include<unordered_map>

2.使用

如果对于对于排序没有相应的要求,可以使用这两个来减少复杂度,防止运行超时

注意:但是在输出的时候,尽管是无序的,但是却不是输入的顺序

image-20250111204645805

bitset(位运算)

1.在使用时,要使用相应的头文件

#include<bitset>

2.使用

#include<iostream>
#include<bitset>
using namespace std;
int main()
{bitset<5> b(19); cout<<b<<endl;//10011bitset<8> c("111");cout<<c<<endl;//00000111string  m = "1111100101";bitset<5> d(m,0,5); //从m这个字符串中,下标为第0个元素开始 ,找长度为5个的位 cout<<d<<endl;  //11111for(int i = 0;i < b.size();i++)cout<<b[i];//倒序输出,从最低位到最高位进行输出 11001cout<<endl; cout<<"是否存在1:"<<b.any()<<endl;//证明是存在1的 cout <<"是否不存在1:" <<b.none()<<endl;//证明是存在1的 cout<<"1的个数为:"<<b.count()<<endl; //3cout<<"b中元素的个数:"<<b.size()<<endl;  // 5cout<<"下标为i的元素是不是1:"<<b.test(1)<<endl; //下标为1的元素是1b.flip(1);//将元素b[1]位置上的元素进行取反cout<<b<<endl; //10001unsigned long a = b.to_ulong(); //转换成数字 cout<<a<<endl; // 17return 0; 
}

sort(排序)

1.在使用时,要使用相应的头文件

#include<algorithm>

2.使用

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{vector <int> vv(10);   //定义数组 for(int i = 10;i >= 1;i--)vv[10-i] = i;      //初始化数组 for(int i = 0;i < 10;i++)cout<<vv[i]<<" ";//输出数组   10 9 8 7 6 5 4 3 2 1cout<<endl; sort(vv.begin(),vv.end());//排序 for(int i = 0;i < 10;i++)cout<<vv[i]<<" ";//输出数组  1 2 3 4 5 6 7 8 9 10return 0; 
}

3.cmp自定义函数

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(int m,int n)
{return m>n;
}
int main()
{vector <int> vv;   //定义数组 for(int i = 1;i <= 10;i++)vv.push_back (i);      //初始化数组 for(int i = 0;i < 10;i++)cout<<vv[i]<<" ";//输出数组   1 2 3 4 5 6 7 8 9 10cout<<endl; sort(vv.begin(),vv.end(),cmp);//排序 ,加入自定义函数,让排序按照固定函数的方式进行排序 for(int i = 0;i < 10;i++)cout<<vv[i]<<" ";//输出数组  10 9 8 7 6 5 4 3 2 1 return 0; 
}

注意:在自定义函数中,只允许使用> , < ,不允许使用 <= ,>=

#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;elsereturn a.name < b.name; //如果年龄相同,则根据ASCII码进行排序
}
int main()
{stu s[3];for(int i = 0;i < 3;i++){cin>>s[i].age>>s[i].name;}sort(s,s+3,cmp);for(int i = 0;i < 3;i++){cout<<s[i].name<<" "<<s[i].age<<endl;}return 0; 
}

cctype头文件

#include<iostream>
#include<algorithm>
#include<cctype>
using namespace std;int main()
{char s = 'A';cout<<isalpha(s)<<endl;//1 是否是字母 cout<<islower(s)<<endl;//0 是否是小写字母 cout<<isupper(s)<<endl;//1 是否是大写字母 cout<<isalnum(s)<<endl;//1 是否是字母或者数字 cout<<isspace(s)<<endl;//0  是否是空格,\t \n  \rchar s1 = tolower(s);cout<<s1<<endl; //achar s2 = toupper(s);cout<<s2<<endl; //Areturn 0; 
}

cpp11特性

#include<iostream>
#include<algorithm>
using namespace std;int main()
{auto a = 10;cout<<a<<endl; auto x ="hello";cout<<x<<endl;return 0; 
}

注意:在使用auto时,必须对变量进行初始化

#include<iostream>
#include<algorithm>
#include<vector> 
using namespace std;int main()
{vector<int> v(5,2);for(auto a:v)cout<<a<<" "; // 2 2 2 2 2cout<<endl;for(auto &b:v) //取地址可以对值进行更改b++;for(auto c:v)cout<<c<<" "; // 3 3 3 3 3return 0; 
}
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;int main()
{string s = to_string(123);  //转换成为字符类型 cout<<s<<endl;printf("%s",s.c_str());return 0; }
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;int main()
{int s = stoi("123");cout<<s-1<<endl; //122double s1 = stod("12.34"); cout<<s1-1; //11.34}

小知识点

优先队列的底层实际是堆排序 priority-queue <int,vector,greater>

第一个参数是数据类型,第二个参数是封装的数据,第三个是实现方式(从大到小排列)(less是从小到大排序)

q.size(),size()的方法返回的是unsigned int,如果两个方法相减结果还是无符号的,不会存在负数 !

超级玛丽游戏

#include<iostream>
// 引入输入输出流库,用于在控制台进行输入输出操作
using namespace std;
int main()
{// 主函数,程序的入口点cout<<R"(                ********************####....#.#..###.....##....###.......######              ###            ###...........               #...#          #...###*#######                 #.#.#          #.#.#####*******######             #.#.#          #.#.#...#***.****.*###....          #...#          #...#....**********##.....           ###            ###....****    *****....####        ##########        ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
##########################################    #----------#
#.....#......##.....#......##.....#......#    #----------#
##########################################    #----------#
#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#
##########################################    ############ )";// 使用原始字符串 字面量  R"(...) 输出艺术图案// 原始字符串字面量以 R"(" 开头,以 ")" 结尾,其中的内容会原样输出,无需对特殊字符进行转义
}
#include<iostream>
#include <iomanip>  
using namespace std;
int main()
{double a;int b;cin >> a >> b;cout << setprecision(3) <<fixed<< a / b << endl; //表示精确到小数点后三位cout << b * 2;return 0;
}

fixed 用于指定以固定小数点的形式输出浮点数,会让浮点数按照小数点固定的位置显示,即不使用科学计数法。

比如,对于数字 3.1415926 ,若没有 fixed ,当设置精度为3时可能输出 3.14e+0 这种科学计数法形式,使用 fixed 后则会输出 3.142

int* a,b; //前者是指针,后者是整数
//其实质是 int *a,b; * 是跟着变量的,如果想要定义两个指针,则应该是
int *a,*b;
//关于c++的引用应当也是这样的
int &a = 10,&b = 20;
http://www.dtcms.com/a/519582.html

相关文章:

  • uni-app 入门学习教程,从入门到精通,uni-app 企业项目实战:鲁嗑瓜子项目开发知识点(9)
  • uni-app小程序往飞书多维表格写入内容(包含图片)
  • 【uniapp】App平台展示pdf文件
  • Jenkins Pipeline 中使用 GitLab Webhook 触发任务执行
  • 【课堂笔记】概率论-2
  • 自建企业级演示中心:不用租Office,PPTist+cpolar方案实测
  • ubuntu22+postgresql18启动报错
  • 如何做好电商网站平面设计wordpress接入翼支付宝
  • 网站 建设初步下载安装wordpress 主题
  • numpy 广播详解(Broadcasting)​​
  • 【数据结构】 [特殊字符] 顺序表详解——数据结构的第一块基石
  • 企业级安全运营中心(SOC)建设实战:从威胁检测到自动化响应
  • 分布式存储Ceph与OpenStack、RAID的关系
  • “五金件自动化上下料”革新:人形机器人如何重塑柔性制造
  • 多线程六脉神剑第二剑:监视器锁 (Monitor)
  • 飞书多维表格自动化做音视频文案提取,打造素材库工作流,1分钟学会
  • 基于主题聚类的聊天数据压缩与智能检索系统
  • 结构健康自动化监测在云端看数据变化,比人工更及时精准,优缺点分析?
  • 做夹具需要知道的几个网站服装页面设计的网站
  • 分享影视资源的网站怎么做网站字头优化
  • 照明回路配线-批量测量超实用
  • Python 条件判断机制本质
  • 关于spiderdemo第二题的奇思妙想
  • Python处理指定目录下文件分析操作体系化总结
  • k8s部署自动化工具jenkins
  • YOLOv5 目标检测算法详解(一)
  • No040:陪伴的艺术——当DeepSeek学会在时光中温柔在场
  • 6-1〔O҉S҉C҉P҉ ◈ 研记〕❘ 客户端攻击▸侦查客户端指纹
  • 苏州企业网站设计企业phpstudy如何建设网站
  • 仿站网站域名网站建设数据库实验心得