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
32位 long 4
long double 12
char* 4
64位 long 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 引用与指针的区别
- 引用,是参数对象(某块内存)的别名,引用的大小即参数对象的大小;
- 指针,内容是参数对象的地址,与参数对象不是一个东西;
- 指针可以为空,但引用不为空,是一个已存在的对象的别名;
- 指针可以改变指向对象, 引用不可改边代表对象;
- 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
文章来源:https://www.toymoban.com/news/detail-682281.html
到了这里,关于Python 和 C++ 使用细节差别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!