python转C++之list转vector

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言`

最近要做项目将python语言的代码转为c++,这里记录一下其中的数据结构转化,本文主要使用c++的vector来描述python的list数据结构。


一、list

list中python语言中常用的数据结构,其中常用操作如下所示:

# ---------------------------------------------
# 创建列表
# ---------------------------------------------
# 创建空列表
list1 =[]
# 创建非空列表
list2 = [1, 2, 3, 4, 5, 6, 7]
# list函数创建列表
list3 = list((1, 2, 3, 4))
# ---------------------------------------------
# 访问列表
# ---------------------------------------------
# 下标访问
# 正向索引:从下标0开始递增
# 反向索引:从下标-1开始递减
print(list2[0], " ", list2[-1])

# 切片操作(左开右闭)
print(list2[1:5:1])

# 赋值
list2[1] = 10
print(list2[1])

# 遍历列表
for i in list2:print(i)

# 存在元素
if 1 in list2:
    print("1 in list")
else:
    print("1 not in list")

# 合并列表
list4 = list2 + list3
print(list4)

# 二维列表
list5 = [list2, list3]
print(list5)
# ---------------------------------------------
# 内置方法
# ---------------------------------------------
# 尾插append
list2.append(15)
print(list2)

# 指定插入insert
list2.insert(1,11)
print(list2)

# 迭代extend
list1.extend(list2)
print(list1)

# 统计元素count
print(list1.count(1))

# 获取索引index
print(list1.index(15))

# 反转列表reverse
list1.reverse()
print(list1)

# 删除元素pop
list1.pop()
print(list1)

# 清空列表clear
list1.clear()

二、vector

vector是c++常用的容器,针对上述list的常用操作时我们可以用vector描述为:

    // --------------------------------------------------
    // 创建vector
    // --------------------------------------------------
    // 创建空vector
    std::vector<int> vec1;

    // 创建非空vector
    std::vector<int> vec2 = { 1,2,3,4,5,6,7 };

    // 参数构造
    std::vector<int> vec3(vec2);
    // --------------------------------------------------
    // 访问vector
    // --------------------------------------------------
    // 下标访问
    std::cout << vec2[0] << std::endl;
    std::cout << vec2[vec2.size() - 1] << std::endl;

    // 切片操作
    std::vector<int> subvec1(vec2.begin() + 1, vec2.begin() + 5);
    for (auto it:subvec1)
    {
        std::cout << it << std::endl;
    }

    // 赋值
    vec2[1] = 10;
    std::cout << vec2[1] << std::endl;

    // 遍历
    for (auto it : vec2)
    {
        std::cout << it << " ";
    }
    std::cout << std::endl;

    // 存在元素
    auto it = std::find(vec2.begin(), vec2.end(), 1);
    if (it != vec2.end())
    {
        std::cout << "1 in vector" << std::endl;
    }
    else
    {
        std::cout << "1 not in vector" << std::endl;
    }

    //合并vector
    std::vector<int> vec4 = vec2;
    vec4.insert(vec4.end(), vec3.begin(), vec3.end());
    for (auto it : vec4)
    {
        std::cout << it << " ";
    }
    std::cout << std::endl;

    // 二维vector
    std::vector<std::vector<int>> vec5 = { vec2,vec3 };
    for (auto it1:vec5 )
    {
        for (auto it2 : it1)
        {
            std::cout << it2 << " ";
        }
        std::cout << std::endl;
    }
    // --------------------------------------------------
    // 内置方法
    // --------------------------------------------------
    // 元素个数size
    std::cout << vec2.size() << std::endl;

    // 尾插push_back
    vec2.push_back(15);
    for (auto it : vec2)
    {
        std::cout << it << " ";
    }
    std::cout << std::endl;

    // 插入insert
    vec2.insert(vec2.begin() + 1, 11);
    for (auto it : vec2)
    {
        std::cout << it << " ";
    }
    std::cout << std::endl;

    // 迭代
    vec1.insert(vec1.end(), vec2.begin(), vec2.end());
    for (auto it : vec1)
    {
        std::cout << it << " ";
    }
    std::cout << std::endl;

    // 统计元素cout
    std::cout << std::count(vec2.begin(), vec2.end(), 1) << std::endl;

    // 查找元素
    std::cout << std::find(vec2.begin(), vec2.end(), 15) - vec2.begin() << std::endl;

    // 反转vector
    std::reverse(vec1.begin(), vec1.end());
    for (auto it : vec1)
    {
        std::cout << it << " ";
    }
    std::cout << std::endl;

    // 删除元素 pop_back
    vec1.pop_back();
    for (auto it : vec1)
    {
        std::cout << it << " ";
    }
    std::cout << std::endl;

    // 清空vector clear
    vec1.clear();

总结

本文主要针对python转c++时对list的常用操作利用vector进行简单描述,新人能力有限,如有不足之处欢迎大佬指点纠正。

  • 17
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值