# C转C++ 个人总结

1.使用C++的好处

2.using namespace std

3.cin和cout

#include<iostream> //必备的头文件

using namespace std; //std 的名称空间

int main(void)
{
int n;
cin >> n; //scanf("%d",&n);
cout << "Hello World!" << n++ <endl; return 0;
}
#include<iostream> //必备的头文件

int main(void)
{
int n;
std::cin >> n; //scanf("%d",&n);
srd::cout << "Hello World!" << n++ <endl; return 0;
}

结果:

4.头文件 -> 去掉.h直接在开头加c

eg:

#include<cstring>
#include<cmath>

5.变量声明 (for循环内直接定义)

#include<iostream>

using namespace std;

int main(void)
{ int n;
cin >> n; for(int i=0;i<10;i++)
cout << n << " "; cout << endl;
for(int i=0;i<10;i++)
cout << n+1 << " "; return 0;
}

结果:

6.bool变量 (非0为true 0为false)

#include<iostream>

using namespace std;

int main(void)
{
bool flag = true;
bool flag2 = -1;
bool flag3= 0; cout << flag << " " << flag2 << " " << flag3 << endl; return 0;
}

结果:输出 1 1 0

7.const定义常量

#include<iostream>
using namespace std; int main(void){ const int MAX = 200; cout << MAX << endl; return 0;
}

结果:输出 200

8.string类

#include<iostream>
using namespace std; int main(void){ string s = "hello"; //定义
string s2 = " world!";
string s3 = s + s2; //拼接 //cin >> s; //只能输入一个单词
getline(cin,s); //得到一行
cout << s << endl;
cout << s.length() << endl; //s有多长 return 0;
}
#include<iostream>
using namespace std; int main(void){ string s = "Hello World!";
cout << s <<endl;
string s_sub = s.substr(6,5);//s1 = s.substr(n,m); 从第n个字符开始取m个字符
string s_sub2 = s.substr(6);//s2 = s.substr(n);从第n个字符开始取后面全部
cout << s_sub << endl;
cout << s_sub2 <<endl; return 0;
}

结果:

9.结构体

#include<iostream>
using namespace std; struct stu{
string name;
int age;
}; int main(void)
{
stu a[10]; return 0;
}

10.引用&

#include<iostream>
using namespace std; void c(int &a)
{
a += 1;
} int main(void)
{
int a = 4;
c(a);
cout << a << endl; return 0;
}

结果:

11.vector(可变数组)

头文件:#include

#include<iostream>
#include<vector>
using namespace std; int main(void)
{ vector <int> v;
v.resize(10); //分配数组大小
for(int i=0;i<10;i++)
v[i] = i; v.push_back(11); //末尾添加新的数据 for(int i=0;i<11;i++)
cout << v[i] <<" "; //cout << v.size() <<endl; return 0;
}
#include<iostream>
#include<vector>
using namespace std; int main(void)
{ vector <int> v(10,2); //10个空间,每个空间数为2
//vector <int> v(10);等价于 vector <int> v(10,0);
for(int i=0;i<10;i++)
cout << v[i] <<" "; return 0;
}
#include<iostream>
#include<vector>
using namespace std; int main(void)
{ vector <int> v;
v.resize(10);
v.push_back(11);
//迭代器:自动把容器中的值都遍历一遍
for(auto p = v.begin();p != v.end();p++)
cout << *p <<" "; return 0;
}

结果:

12.set

set是集合,它里面的元素各不相同,而且元素会按照从小到大排序

#include<iostream>
#include<set>
using namespace std; int main(void)
{
set <int> s;
s.insert(1);
s.insert(2);
s.insert(3);
for(auto p=s.begin();p!=s.end();p++)
{
cout << *p << " ";
}
cout << endl; cout << (s.find(2) != s.end()) <<endl;
cout << (s.find(4) != s.end()) <<endl; s.erase(1); // 删除1
cout << (s.find(1) != s.end()) <<endl; //是否存在1 return 0;
}

结果:

13.map(键值对)

#include<iostream>
#include<map>
using namespace std; int main(void)
{
map <string,int> m;
/*
map是键值对,它会自动将所有的键值对从小到大排序
*/
m["hello"] = 4;
m["world"] = 3;
m["iloveShanxi"] = 5;
m["ha"] = 6; //cout << "hello: " <<m["hello"] << endl; //已知元素进行输出 for(auto p=m.begin();p!=m.end();p++)//p 结构体指针
cout << p->first << ": " << p->second << endl;// cout << "map的长度为:" << m.size() <<endl; return 0;
}

结果:

14.stack(栈)

#include<iostream>
#include<stack>
using namespace std; int main(void)
{
stack <int> s;
s.push(1);
s.push(2);
s.push(3); s.pop();
s.push(5);
/*
栈只能获取到栈顶元素,不能将其自动遍历
*/ cout << s.top() << endl; //获取栈顶元素 cout << "栈的长度是:" << s.size() << endl; //获取长度 return 0;
}

结果:

15.queue(队列)

#include<iostream>
#include<queue>
using namespace std; int main(void)
{
queue <int> s;
for(int i=1;i<=10;i++)
s.push(i); cout << "队首为:" << s.front() << endl << "队尾为:" << s.back() <<endl; s.pop();//出队
cout << "队首为:" << s.front() << endl << "队尾为:" << s.back() <<endl; s.push(11);//入队
cout << "队首为:" << s.front() << endl << "队尾为:" << s.back() <<endl; cout << s.size() <<endl;
return 0;
}

结果:

16.unordered_map和unordered_set

#include<iostream>
#include<unordered_map>
#include<unordered_set>
using namespace std; int main(void)
{
unordered_map <string,int> m;
unordered_set <int> s; s.insert(1);
s.insert(7);
s.insert(5); m["hello"] = 1;
m["world"] = 2;
m["ha"] = 3;
m["hlkwe"] = 4;
m["hlkwt"] = 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;
}

结果:

输出是没有规律的(经过哈希表实现)

17.bitset 位运算

#include<iostream>
#include<bitset>
using namespace std; int main(void)
{
bitset <5> b(19);
cout << b << endl; for(int i=0;i<b.size();i++)
cout << b[i] << " "; cout << endl; cout << "是否有1:" << b.any() << endl;//b中是否有二进制位
cout << "是否不存在1:" << b.none() << endl;//b不存在1吗?
cout << "1的个数:" << b.count() << endl;//b中1的个数
cout << "b中元素个数" << b.size() <<endl;//b中元素的个数
cout << "下标为 i 的元素是不是1:" << b.test(0) << endl;//下标i处是不是1 b.flip(1);//第i位取反
cout << b << endl; unsigned long a = b.to_ulong();
cout << a << endl; return 0;
}

结果:

17.bitset 补充

	string m = "0110101";
bitset <5> b(m,0,5);
//bitset <5> b("01101");
//输出01101

18.sort 函数

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std; int main(void)
{
vector <int> m(10);
for(int i=10;i>0;i--)
m[i]=10-i; for(int i=0;i<10;i++)
cout << m[i] << " ";
cout << endl; sort(m.begin(),m.end());//m.end()数组最后一个元素的下一个地址 [) for(int i=0;i<10;i++)
cout << m[i] << " "; return 0;
}

结果:

19.使用sort自定义cmp函数

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
/*
cmp如果返回值为真,那么x放在y前面(返回值为假时,交换两个数)
*/
bool cmp(int x,int y)
{
return x>y;
} int main(void)
{
vector <int> v;
for(int i=1;i<=10;i++)
v.push_back(i); sort(v.begin(),v.end(),cmp);//从大到小排序 for(auto p=v.begin();p!=v.end();p++)
cout << *p << " "; cout << endl; return 0;
}

结果:

20.cctype头文件

#include<iostream>
#include<cctype>
using namespace std; int main(void)
{
char c = 'A'; cout << "isalpha:" << isalpha(c) << endl;//字母?
cout << "islower:" << islower(c) << endl;//小写字母?
cout << "isupper:" << isupper(c) << endl;//大写字母?
cout << "isalnum:" << isalnum(c) << endl;//字母or数字?
cout << "isspace:" << isspace(c) << endl;//space \t \r \n? char s = tolower(c);//转为小写字母
cout << s << endl; char s1 = toupper(c);//转为大写字母
cout << s1 << endl; return 0;
}

结果:

21.c++11的新特性

22.auto声明

#include<iostream>
#include<vector>
using namespace std; int main(void)
{
auto x = 19;//初始化,可以让编译器根据初始值直接推断变量的类型
auto y = 1.8; cout << x << " " << y <<endl; vector <int> a(10,1);//迭代器
for(auto p=a.begin();p!=a.end();p++)
cout << *p << " "; return 0;
}

23.基于范围的for循环

#include<iostream>
#include<vector>
using namespace std; int main(void)
{
int a[5] = {1};//1 0 0 0 0
for(int i:a)/*for(int &i:a)改变原来的值
for(auto i:a)
*/
{
i++; //并没有改变原来的值
}
for(int i:a)
cout << i << " ";
cout << endl;
return 0;
}
#include<iostream>
#include<vector>
using namespace std; int main(void)
{
vector <int> b(10,1);
for(int i:b)
cout << i << " ";
cout << endl; return 0;
}

结果:

24.to_string

#include<iostream>
#include<string>
using namespace std; int main(void)
{
string s = to_string(123.1);//将数字转化为字符变量
cout << s << endl; printf("%s\n",s.c_str()); return 0;
}

结果:

25.stoi stod

#include<iostream>
#include<string>
using namespace std; int main(void)
{
int a = stoi("123");//将字符串转化成int型
cout << a-1 << endl; double b = stod("12.34");//将字符串转化成double型
cout << b-1; return 0;
}

26.Dev C++设置C++ 11

27.完结

随机推荐

  1. Min-25 筛学习笔记

    Min-25 筛学习笔记 \(\text{By DaiRuiChen007}\) 一.简要介绍 Min-25 筛,是一种能在亚线性时间内求出特定的一类积性函数 \(f(i)\) 的前缀和的算法. 具体 ...

  2. .Net 472&6.0 Razor编译时的小差异

    前言 几个月前在进行着.Net 472到6.0的升级,复用原有代码,在对Razor进行迁移中,发现原运行正常的代码,却存在报错,深入研究发现是Core下对Razor编译有一些变动. 问题复现 472 ...

  3. Java杂记————object.getClass()和object.class以及Java中的toString()方法的的区别

    不说废话,直接上干货: (注意大小写:object为对象,Object为类) 1,object.getClass()它是Object类的实例方法,返回一个对象运行时的类的Class对象,换句话说,它返 ...

  4. ISP-长短曝光融合生成HDR图像

    1.高动态范围图像相关 图像的动态范围是指一幅图像中量化的最大亮度与最小噪声的比值.高动态范围HDR(high dynamic range)图像,能够完整表示真实场景中跨度很大的动态范围.采用普通CM ...

  5. 如何在 Windows Server 2022 阿里云服务器上搭建自己的 MQTT 服务器之二Mosquitto服务器

    一.介绍 最近几天都在搭建MQTT服务器,几天前搭建好了一个 Apache-Apollo的 MQTT 服务器,当我们在管理我们的主题的时候,发现主题的名称的斜杠(/)变成了点号(.),正好我在调试程序 ...

  6. K8S 对象

    本页说明了在 Kubernetes API 中是如何表示 Kubernetes 对象的, 以及使用 .yaml 格式的文件表示 Kubernetes 对象. https://kubernetes.io ...

  7. 利用Redis实现向量相似度搜索:解决文本、图像和音频之间的相似度匹配问题

    在自然语言处理领域,有一个常见且重要的任务就是文本相似度搜索.文本相似度搜索是指根据用户输入的一段文本,从数据库中找出与之最相似或最相关的一段或多段文本.它可以应用在很多场景中,例如问答系统.推荐系统 ...

  8. ChatGPT插件开发实战

    1.概述 ChatGPT是一款由OpenAI推出的先进对话模型,其强大的自然语言处理能力使得它成为构建智能对话系统和人机交互应用的理想选择.为了进一步拓展ChatGPT的功能和适应不同领域的需求,Op ...

  9. DC-SDK 开发文档

    https://resource.dvgis.cn/dc-docs/v2.x/zh/introduction/#%E5%BA%94%E7%94%A8%E9%85%8D%E7%BD%AE

  10. 关于预处理器 sass 的超全用法

    随着用户需求的增加,应用于页面的 css 代码越来越复杂越发臃肿难以维护,但是又没有 css 的替代品,css 预处理器作为 css 的扩展,出现在前端技术中. sass 是 css 预处理器中常用的 ...