Python的列表list和C++的vector使用方法对比

这篇文章详细对比了Python和C++中处理列表和vector的不同方法,包括初始化、添加元素、访问元素、遍历以及一些其他操作如复制和清除。Python使用append和extend函数,而C++使用push_back和insert函数进行元素添加。同时,文章展示了如何在C++中通过迭代器遍历vector。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PythonC++解释
v = []vector<Elem> v创建一个空的vector。
v.append(elem)v.push_back(elem)在尾部加入一个数据。
v.extend([x, y, z])v.insert(v.end(), {x, y, z})在尾部一次添加多个数据
len(v)v.capacity()返回容器中数据个数。
v[0]v.front()传回第一个数据。
v[-1]v.back()传回最后一个数据,不检查这个数据是否存在。
v[idx]v.at(idx)传回索引idx所指的数据,如果idx越界,抛出out_of_range。
v[0]v.begin()传回迭代器重的可一个数据。
v[-1]v.end()指向迭代器中的最后一个数据地址。
v[::-1]v.rbegin()传回一个逆向队列的第一个数据。
v.reverse()v.rend()传回一个逆向队列的最后一个数据的下一个位置。
v.pop()v.pop_back()删除最后一个数据。
v1 = v.copy()vector <Elem> v1(v)复制一个vector。
v = [elem] * nvector <Elem> v(n, elem)创建一个含有n个elem的vector。
v = [elem] * nv.assign(n,elem)  将n个elem的拷贝赋值给v。
v = list(beg, end)vector <Elem> v(beg,end)创建一个以[beg;end)区间的vector。
v.extend(range(beg, end))v.assign(beg,end)将[beg; end)区间中的数据赋值给v。
del vv.~ vector <Elem>()销毁vector所有元素,释放内存。
v.clear()v.clear()移除容器中所有数据。
len(v) == 0v.empty()判断容器是否为空。
v.insert(pos, elem)v.insert(pos,elem)在pos位置插入一个elem拷贝,传回新数据位置(位置指传回地址值)。
v[pos:pos] = [elem] * nv.insert(pos,n,elem)在pos位置插入在[beg,end)区间的数据。无返回值。
v[pos:pos] = list(beg, end)v.insert(pos,beg,end)在pos位置插入n个elem数据。无返回值。
v.pop(pos)v.erase(pos)删除pos位置的数据,传回下一个数据的位置。
v[beg:end] = []v.erase(beg,end)删除[beg,end)区间的数据,传回下一个数据的位置。
v = []v.reserve()保留适当的容量。 
v += [None] * nv.resize(num)重新指定队列的长度。
max(v)v.max_size()返回容器中最大数据的数量。
v1, v2 = v2, v1c1.swap(c2)将c1和c2元素互换。
v1, v2 = v2[:], v1[:]swap(c1,c2)同上操作。

for循环遍历list各项元素:

Python :

v = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in v:
    print (i)

# 或者

[print(i) for i in v]

C++:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    for(int i = 0; i < int(v.capacity()); i++)
        cout << v[i] << endl;
}

或者使用迭代器: 

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    vector<int>::iterator iter;
    for(iter = v.begin() ; iter != v.end() ; ++iter)
        cout  << *iter << endl;
}

C++ 练习2:将一个数组 v1[ ] 数组转换成vector v2形式,再循环遍历。

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int v1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    vector<int> v2(v1, v1 + sizeof(v1) / sizeof(int));;

    // 或者拆分来写:
    // vector<int> v2;
    // v2.assign(v1, v1 + sizeof(v1) / sizeof(int));

    for (int i = 0; i < int(v2.capacity()); i++)
        cout  << v2[i] << endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值