C++ 学习笔记

  • ? : 运算符
  • 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()

相关推荐

  1. c++模板学习笔记

    2024-04-09 17:18:02       49 阅读
  2. C++学习笔记(十)

    2024-04-09 17:18:02       50 阅读
  3. C++学习笔记01

    2024-04-09 17:18:02       58 阅读
  4. C#学习笔记

    2024-04-09 17:18:02       60 阅读
  5. c# 学习笔记 - LINQ

    2024-04-09 17:18:02       58 阅读
  6. c++11学习笔记

    2024-04-09 17:18:02       73 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-09 17:18:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-09 17:18:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-09 17:18:02       87 阅读
  4. Python语言-面向对象

    2024-04-09 17:18:02       96 阅读

热门阅读

  1. [安卓逆向]常见调试和反调试及解决方案

    2024-04-09 17:18:02       37 阅读
  2. Redis 常见面试题

    2024-04-09 17:18:02       33 阅读
  3. Arrays类

    Arrays类

    2024-04-09 17:18:02      36 阅读
  4. 系统设计之订单系统中如何防止商品超卖

    2024-04-09 17:18:02       39 阅读
  5. Vue Router的介绍与引入

    2024-04-09 17:18:02       34 阅读
  6. 自动化测试岗面试问题整理

    2024-04-09 17:18:02       29 阅读
  7. 基于单片机的机械手臂控制系统设计

    2024-04-09 17:18:02       30 阅读
  8. 逻辑回归(Logistic Regression)详解

    2024-04-09 17:18:02       30 阅读
  9. 蓝桥杯刷题 深度优先搜索-[178]全球变暖(C++)

    2024-04-09 17:18:02       33 阅读
  10. 声明结构体变量时,是否一定要加struct关键字?

    2024-04-09 17:18:02       31 阅读