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

Python C++ 解释
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] * n vector <Elem> v(n, elem) 创建一个含有n个elem的vector。
v = [elem] * n v.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 v v.~ vector <Elem>() 销毁vector所有元素,释放内存。
v.clear() v.clear() 移除容器中所有数据。
len(v) == 0 v.empty() 判断容器是否为空。
v.insert(pos, elem) v.insert(pos,elem) 在pos位置插入一个elem拷贝,传回新数据位置(位置指传回地址值)。
v[pos:pos] = [elem] * n v.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] * n v.resize(num) 重新指定队列的长度。
max(v) v.max_size() 返回容器中最大数据的数量。
v1, v2 = v2, v1 c1.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;
}

猜你喜欢

转载自blog.csdn.net/Scott0902/article/details/129666418
今日推荐