Python 和 C++ 使用细节差别

这篇具有很好参考价值的文章主要介绍了Python 和 C++ 使用细节差别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 += 1
    a.pop()

print(cnt, a)
'''
3 []
'''
  • while循环,python3和C++,while条件中的长度计算是可变的,即每次循环都会重复计算。

2. C++ 字符串操作

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
 * /

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

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]; 
    }
}; 默认初始化为0

vector<int> a(10); 默认初始化为0
vector<int> a(10, 1); 初始化为1

5. list和vector

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

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

5.6 list 和vector 排序

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

6. 字符数字转数值

  • C++
# 获取的是ascii码值
int('0') >>> 48
int('1') >>> 49

# 将字符数字专为int'1' - '0' >>> 1
  • Python
int('0') >>> 0

7. list和queue

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

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

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

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

7.3 只读取头/尾元素

list[0]
list[-1]

queue.front()
queue.back()

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

list.append(x)

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

8. 传参

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

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

// 函数内对res操作不改变函数外res
// 返回res与传入res地址不同,两个独立的res

void fc(vector<int> res) {
	res.push_back(1);
	return res;
}
vector<int> res;
fc(res);

8.1.2 引用与指针的区别

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

8.1.3 传引用

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

8.1.3 传指针

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

文章来源地址https://www.toymoban.com/news/detail-682281.html

到了这里,关于Python 和 C++ 使用细节差别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 图像处理教程:如何提高图像细节清晰度

    Python 是一种广泛应用于图像处理的编程语言,它提供了丰富的图像处理库,例如 Pillow 和 OpenCV 等。在进行图像处理时,有时候我们需要提高图像的细节清晰度,以便更好地观察和分析图像。本教程将介绍一些 Python 图像处理技巧,帮助您提高图像细节的清晰度。 增强图像对

    2024年02月11日
    浏览(40)
  • Python制作AI贪吃蛇,很多很多细节、思路都写下来了!

    前提:本文实现AI贪吃蛇自行对战,加上人机对战,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什么了,思路都一样) 1.智能模式:电脑自己玩(自己吃食物) 2.人机对战:电脑和人操作(在上步的基础上加一个键盘控制的贪吃蛇即可

    2024年02月05日
    浏览(44)
  • 【华为OD机试 2023】 银行插队(C++ Java JavaScript Python)

    华为OD统一考试A卷+B卷 新题库说明 2023年5月份,华为官方已经将的 2022/0223Q(1/2/3/4)统一修改为OD统一考试(A卷)和OD统一考试(B卷)。 你收到的链接上面会标注A卷还是B卷。请注意:根据反馈,目前大部分收到的都是B卷。但是仍有概率抽到A卷。 A卷对应2023的新题库(2022Q4 2

    2023年04月13日
    浏览(59)
  • 华为OD机试 - 文件缓存系统(Java & JS & Python & C++)

    题目描述 请设计一个文件缓存系统,该文件缓存系统可以指定缓存的最大值(单位为字节)。 文件缓存系统有两种操作: 存储文件(put) 读取文件(get) 操作命令为: put fileName fileSize get fileName 存储文件是把文件放入文件缓存系统中; 读取文件是从文件缓存系统中访问已

    2024年04月10日
    浏览(79)
  • 【华为OD机试 2023】 数组合并(C++ Java JavaScript Python)

    华为OD统一考试A卷+B卷 新题库说明 2023年5月份,华为官方已经将的 2022/0223Q(1/2/3/4)统一修改为OD统一考试(A卷)和OD统一考试(B卷)。 你收到的链接上面会标注A卷还是B卷。请注意:根据反馈,目前大部分收到的都是B卷。但是仍有概率抽到A卷。 A卷对应2023的新题库(2022Q4 2

    2023年04月12日
    浏览(39)
  • 【Python】科研代码学习:十五 configuration,tokenization 的代码细节:Llama 为例

    对于 HF 的 Transformers 库的经典 API 以及大致架构我们都从前面已经学习的差不多了 【动机】那还剩下几个小问题,就是: Tokenizer 和 Specific Model 的运作原理是什么? 我如何查看与修改模型的架构?前向与反向传播过程?损失计算?激活函数? 这些模型层面的内容,如何学习

    2024年03月22日
    浏览(36)
  • 【华为OD机试 2023】快递业务站(C++ Java JavaScript Python)

    题目描述 快递业务范围有 N 个站点,A 站点与 B 站点可以中转快递,则认为 A-B 站可达, 如果 A-B 可达,B-C 可达,则 A-C 可达。 现在给 N 个站点编号 0、1、…n-1,用 s[i][j]表示 i-j 是否可达, s[i][j] = 1表示 i-j可达,s[i][j] = 0表示 i-j 不可达。 现用二维数组给定N个站点的可达关

    2024年02月11日
    浏览(33)
  • 【华为OD机试 2023】 去除多余空格(C++ Java JavaScript Python)

    华为OD统一考试A卷+B卷 新题库说明 2023年5月份,华为官方已经将的 2022/0223Q(1/2/3/4)统一修改为OD统一考试(A卷)和OD统一考试(B卷)。 你收到的链接上面会标注A卷还是B卷。请注意:根据反馈,目前大部分收到的都是B卷。但是仍有概率抽到A卷。 A卷对应2023的新题库(2022Q4 2

    2023年04月12日
    浏览(40)
  • 【笔记】语言实例比较 2. 两数之和 C++ Rust Java Python

    语言实例比较 2. 两数之和 C++ Rust Java Python 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会

    2024年01月16日
    浏览(36)
  • 【华为OD机试2023】服务中心选址 100% C++ Java Python

    前言 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过率。 Tips1:机试为ACM 模式 你的代码需要处理输入输出,input/cin接收输入、print/cout 格式化输出 Tips2:机试按通过率

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包