C++ 常用

news/2024/12/30 21:11:12/

  • 1. 字符串操作
    • 1.1 字符串比较 strcmp
    • 1.2 转为字符串类型 to_string
    • 1.3 字符串相加
    • 1.4 char 转 int s-'0'
    • 1.5 string 转 int stoi()
  • 2. C++和Python使用区别
    • 2.1 循环中的可迭代对象长度
    • 2.2 C++ 字符串操作
      • 2.2.1 reverse(s.begin(), s.begin() + n) 翻转
    • 2.3 C++ 各类型长度
    • 2.4 C++ 数组/容器各元素初始化是否为0
    • 2.5 list和vector
      • 2.5.1 list 和 vector 指定位置插入元素 .insert()
      • 2.5.2 list 和vector 排序
    • 2.6 字符数字转数值
    • 2.7 list和queue
      • 2.7.1 删除头元素并返回,list.pop(0)
      • 2.7.2 删除头元素不返回,list.remove(0)、queue.pop()
      • 2.7.3 只读取头/尾元素
      • 2.7.4 队尾添加元素 queue.push()
    • 2.8 C++ 传值/引用/指针(地址)
      • 2.8.1 传值,调用函数内从新构造一个res对象,不改变原有res
      • 2.8.2 引用与指针的区别
      • 2.8.3 传引用
      • 2.8.4 传指针
  • 3. 声明vector/array

1. 字符串操作

1.1 字符串比较 strcmp

  • 头文件 string.h
  • 变量需要传指针;
  • 返回>0 则第一个字符串比第二个字符串大,反之则小,=0则表示两个字符串相同。
# include <iostream>
# include <stdio.h>
# include <string.h>using namespace std;int main() {string s = "123";char* p = &s[0];// char* p = "123"; // 或者if (!strcmp(p, "123")) {printf("%s \n", p);}printf("%d", strcmp("213", "123"));return 0;
}
/**
123 
1
*/

1.2 转为字符串类型 to_string

# include <iostream>
# include <string>using namespace std;int main() {cout<<to_string(1.1);return 0;
}
// 1.100000

1.3 字符串相加

  • s1 + s2
  • s1.append(s2)
# include <iostream>
# include <stdio.h>using namespace std;int main() {string s1 = "123";string s2 = "45";cout << s1 + s2<<endl;s1.append(s2);cout << s1;return 0;
}

1.4 char 转 int s-‘0’

  • '9' - '0' >>> 9
  • int('1') >>> 49(ascii 码)

1.5 string 转 int stoi()

# include <iostream>
using namespace std;int main() {string s = "23";cout<<stoi(s);return 0;
}

2. C++和Python使用区别

2.1 循环中的可迭代对象长度

  • C++ 中,for循环中写明a.size(),每次循环这个值是重新计算的;
# include “iostream”
# include <vector>
using namespace std;int main() {vector<int> a(10);int cnt = 0;for (int i = 0; i < a.size(); i ++) {cnt += 1;a.pop_back();}cout<< cnt <<endl;return 0;
}
/**
* 循环中a的长度变化,每次循环对比的边界也变化;
* 输出为 5 
*/
  • Python 中 for 循环len(a), 循环中a变化r循环仍采用刚开始执行循环时计算的len(a)
a = [1, 2, 3]cnt = 0
for i in range(len(a)):cnt += 1a.pop()print(cnt, a)
'''
3 []
'''
  • while循环,python3和C++,while条件中的长度计算是可变的,即每次循环都会重复计算。

2.2 C++ 字符串操作

2.2.1 reverse(s.begin(), s.begin() + n) 翻转

  • #include <algorithm>
#include <iostream>
#include <algorithm>using namespace std;int main() {string s = "abcde";// 翻转[0, 2)reverse(s.begin(), s.begin() + 2);cout<< s <<endl;return 0;
}
/*** bacde* /

2.3 C++ 各类型长度

// 1字节 = 8位
char 8
int 4
long long 8
double 8
float 4
32long 4 long double 12 char* 4
64long 8 long double 16 char* 8

2.4 C++ 数组/容器各元素初始化是否为0

int a[10];  不默认初始化为0
int a[10] = {0}; 默认初始化为0
int a[n] = {0}; 报错:变量大小的数组不能初始化
class Solution {
public:int a[10];int cuttingRope(int n) {return a[9]; }
}; 默认初始化为0vector<int> a(10); 默认初始化为0
vector<int> a(10, 1); 初始化为1

2.5 list和vector

2.5.1 list 和 vector 指定位置插入元素 .insert()

  • list.insert(idx, val) idx 整数
  • vector.insert(vector.begin(), val) 在第0各位置插入元素,vector.begin() + 1 指定第1个位置插入

2.5.2 list 和vector 排序

  • python3 list排序
    sort & sorted list排序
  • C++ vector排序
// 默认升序
sort(nums.begin(), nums.end());

2.6 字符数字转数值

  • C++
# 获取的是ascii码值
int('0') >>> 48
int('1') >>> 49# 将字符数字专为int'1' - '0' >>> 1
  • Python
int('0') >>> 0

2.7 list和queue

2.7.1 删除头元素并返回,list.pop(0)

node = list.pop(0) # 传索引0,删除头元素并返回

2.7.2 删除头元素不返回,list.remove(0)、queue.pop()

queue.pop() # 默认删除头元素不返回
list.remove(0) # 传索引0,删除头元素不返回

2.7.3 只读取头/尾元素

list[0]
list[-1]queue.front()
queue.back()

2.7.4 队尾添加元素 queue.push()

list.append(x)queue.push(x)
区别于 vector.push_back()

2.8 C++ 传值/引用/指针(地址)

2.8.1 传值,调用函数内从新构造一个res对象,不改变原有res

// 函数内对res操作不改变函数外res
// 返回res与传入res地址不同,两个独立的resvoid fc(vector<int> res) {res.push_back(1);return res;
}
vector<int> res;
fc(res);

2.8.2 引用与指针的区别

  1. 引用,是参数对象(某块内存)的别名,引用的大小即参数对象的大小;
  2. 指针,内容是参数对象的地址,与参数对象不是一个东西;
  3. 指针可以为空,但引用不为空,是一个已存在的对象的别名;
  4. 指针可以改变指向对象, 引用不可改边代表对象;
  5. C++中传引用更佳,保留传指针主要为了兼容C。

2.8.3 传引用

// 函数内对res的操作 即是对函数外res操作
// 区别在于函数定义时的 & !!!!
// 调用与传值没区别
void fc(vector<int>& res) {res.push_back(1);return res;
}
vector<int> res;
fc(res);

2.8.4 传指针

// 函数内对res的操作 即是对函数外res操作
// 
void fc(vector<int>* res) {// 指针不能直接调用.push_back() !!!res.push_back(1);return res;
}
// 虚需要传入参数对象的地址,用取地址符。
vector<int> res;
fc(&res);

3. 声明vector/array

#include <iostream>
#include <stdio.h>
#include <vector>
#include <cstdlib> // rand() % 100using namespace std;int main() {vector<int> m{1, 2, 3};for (int i = 0; i < 3; i ++) {printf("%d ", m[i]);}printf("\n");int n[3] = {4, 5, 6};for (int i = 0; i < 3; i ++) {printf("%d ", n[i]);}printf("\n");return 0;
}
文章来源:https://blog.csdn.net/qq_45249685/article/details/136839848
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/news/1390024.html

相关文章

TikTok云手机是什么原理?

社交媒体的快速发展和普及&#xff0c;TikTok已成为全球最受欢迎的短视频平台之一&#xff0c;吸引了数以亿计的用户。在TikTok上&#xff0c;许多用户和内容创作者都希望能够更灵活地管理和运营多个账号&#xff0c;这就需要借助云手机技术。那么&#xff0c;TikTok云手机究竟…

ucloud、阿里云、硅云的香港服务器哪家更好?

近年香港云服务器比较受到外贸建站、企业建站人士的欢迎&#xff0c;其中Ucloud、硅云和阿里云三家的香港服务器比较火热&#xff0c;那么该三家的香港服务器有哪些特点呢&#xff1f; 1、ucloud香港服务器 优点&#xff1a;价格低廉 缺点&#xff1a;线路不稳&#xff0c;高…

帅帅密码管理系统使用教程

在这个账号满天飞的大环境&#xff0c;密码太多&#xff0c;又容易遗忘&#xff0c;又不方便管理&#xff0c;存在记事本上&#xff0c;又担心泄漏。帅帅密码管理系统就是帮助你解决以上烦恼&#xff0c;用来帮助个人或团队管理众多的登陆密码&#xff0c;能够快速的查询、新增…

OD C卷 - 可以处理的最大任务

可以处理的最大任务&#xff08;200&#xff09; 有一个tasks任务列表&#xff0c;需要处理其中的任务&#xff1b;tasks[i] [si, ei]&#xff0c;该任务可以在si<day<ei之间的任意天处理&#xff1b;一天仅可以完成一个任务&#xff0c;输出可以处理的最大任务数&…

nginx多级代理配置获取客户端真实ip

流量路径 #mermaid-svg-NX785p8k6RVBngHY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NX785p8k6RVBngHY .error-icon{fill:#552222;}#mermaid-svg-NX785p8k6RVBngHY .error-text{fill:#552222;stroke:#552222;}#…

如何实现图片上传至服务器

在绝大多数的项目中都会涉及到文件上传等&#xff0c;下面我们来说一下技术派中是如何实现原生图片上传的&#xff0c;这个功能说起来简单&#xff0c;但其实对于技术还是有考验的。图片的上传涉及到IO读写&#xff0c;一个文件上传的功能&#xff0c;就可以把IO流涉及到的知识…

快速傅氏变换(Fast Fourier Transform,FFT)算法基本原理详细解析

目录 目录 FFT 基本原理 FFT算法 Cooley-Tukey 步骤概述&#xff1a; 1、分解&#xff1a;将原始序列分成偶数部分和奇数部分。原始DFT问题就被分解成两个长度为N/2的子问题&#xff0c;分别对应偶数索引和奇数索引的元素。 2、递归&#xff1a;递归地对这两个子序列应用F…

python接口自动化正则表达式

在python接口自动化框架里面经常会用到正则表达式&#xff0c;主要是以下两种情况&#xff1a; 1&#xff0c;用python写一个正则表达式&#xff0c;实现对token数据的获取&#xff0c;只获取返回的cookie数据里面的accesstoken。如果对返回的cookie数据中的accesstoken进行获…