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

C++ 学习笔记

文章目录

  • 【 字符串相关 】
    • C++ 输入输出流
    • strcpy_s() 字符串复制
    • 输出乱码
  • 【 STL 】
    • 各个 STL 支持的常见方法

  • ? : 运算符
  • switch case 运算符
switch(expression)
{case constant-expression  :statement(s);break; // 可选的case constant-expression  :statement(s);break; // 可选的default : // 可选的statement(s);
}
  • C++可以不必在程序运行前定义好所有变量
  • 5/2=2,例如:cout << 5/2; 输出为 2。
  • 在 C 语言中,数组的大小必须在使用前已知,并且这个大小在整个程序的运行过程中不能改变,除非使用动态数组。因此,数组的大小通常由常量来定义,而不是变量。这是因为:
    • 编译时分配内存:数组在内存中的存储是连续的,编译器需要在编译时知道数组的大小,以便为数组分配足够的连续内存空间。如果数组的大小在编译时未知,编译器就无法进行内存分配。

【 字符串相关 】

C++ 输入输出流

  • 输入字符串
char s[100]; cin.getline(s, 100);
  • 输入 string类
string s; getline(cin, s);

strcpy_s() 字符串复制

#include <iostream>
#include <cstring>
using namespace std;int main()
{char  s1[] = "123456"; //普通字符串int n = sizeof(s1) / sizeof(char);char* s2 = new char[n]; //动态字符串strcpy_s(s2, n, s1);    //字符串复制cout << n << endl;cout << s2<<endl;return 0;
}

在这里插入图片描述

输出乱码

  • cout << value; cout会自动根据value的类型进行输出, 当 value 类型为 char* 时,cout会从 value 这个 char * 地址开始遍历地址对应的元素直至遇到 ‘\0’ 字符
  • 实例
    s1 是字符数组,直接将地址 s1 输出,会因为没有遇到 ‘\0’ 字符输出乱码。
    s2 是申请了类型为char大小为n的首地址,对其赋值后,也会由于没有遇到 ‘\0’ 字符输出乱码。
    而在 s2 的末位元素赋值为 ‘\0’ 后,将不再出现乱码。
// 将 s1 的前 n 个元素赋值给 s2。
#include <iostream>
using namespace std;int main()
{int n;cin >> n;char s1[] = {'1','2','3','4','5'};char* s2 = new char[n];for (int i = 0; i < n; ++i)s2[i] =s1[i];cout << s2 <<endl;s2[n] = '\0';cout << s2 <<endl;return 0;
}

在这里插入图片描述

【 STL 】

各个 STL 支持的常见方法

STL名称支持的常见方法
vector大小:size()
尾添加:push_back()
头尾指针: begin()、end()
deque大小:size()
头尾添加:push_front()、push_back()
头尾删除:pop_front()、pop_back()
头尾指针: begin()、end()
set大小:size()
插入:insert()、emplace()
删除:erase()
查找: find()
最小的大于 val 的元素:upper_bound()
头尾指针: begin()、end()
map大小:size()
插入:insert()、emplace()
删除:erase()
查找: find()
头尾指针: begin()、end()
最小的大于 val 的元素:upper_bound()
头尾指针: begin()、end()
stack大小:size()
压栈:push()
栈顶元素删除:pop()
栈顶指针: top()
queue大小:size()
尾添加:push()
头删除:pop()
头尾指针: front()、back()
http://www.lryc.cn/news/334737.html

相关文章:

  • 本科生学深度学习一残差网络,解决梯度消失和爆炸
  • 初识SpringMVC
  • 【Leetcode】2009. 使数组连续的最少操作数
  • LeetCode-347. 前 K 个高频元素【数组 哈希表 分治 桶排序 计数 快速选择 排序 堆(优先队列)】
  • K8S Deployment HA
  • 【Linux】linux 在指定根目录下,查找wav文件并删除
  • 三、SpringBoot3 整合 SpringMVC
  • 设计模式之解释器模式(上)
  • [23年蓝桥杯] 买二赠一
  • PgSQL的with as语法
  • 六、c++代码中的安全风险-fopen
  • uniapp项目问题及解决(前后端互联)
  • 面试算法-154-搜索二维矩阵 II
  • Java中Stream流介绍
  • 深度学习的层、算子和函数空间
  • Pillow教程11:九宫格切图的实现方法(安排!!!)
  • Macos 部署自己的privateGpt(2024-0404)
  • 先安装CUDA后安装Visual Studio的额外配置
  • 2024 蓝桥打卡Day35
  • 【Java】单例模式
  • Linux|从 STDIN 读取 Awk 输入
  • 关于K8S集群中maste节点r和worker节点的20道面试题
  • 基于 OpenHarmony HistogramComponent 柱状图开发指南
  • C语言指针相关
  • 设计模式:责任链模式
  • 【Linux】 OpenSSH_9.3p1 升级到 OpenSSH_9.6p1(亲测无问题,建议收藏)
  • 宁波中墙建材对于蒸压加气混凝土砌块2024年前景预测
  • 【神经网络】卷积神经网络CNN
  • 微信小程序-接入sse数据流并实现打字机效果( ChatGPT )
  • 深入了解iOS内存(WWDC 2018)笔记-内存诊断