C++ STL vector相关操作函数

1. xxx.emplace_back( )功能:

该函数是 C++ 11 新增加的,其功能和 push_back() 相同,都是在 vector 容器的尾部添加一个元素。

应用场景:

1.将用链表存储的线性表转化为用数组存储的线性表。leetcode.234 回文链表 法一

2. xxx.size( )功能:

计算vector向量中的元素数量

3. 二维vector( )与下标的使用:

二维向量相当于二维数组。
1.使用vector (vector v); 声明一个容器v时,如果没有给他预定存储空间,则可以直接使用v.push_back(x)插入变量x,那么插入的第一个元素可以用v[0]访问到。
2.vector没有分配空间则不能直接通过下标赋值和访问。
3.初始化时没有分配空间(因为不知道需要分配多大):vector (vector v),后面需要动态分配空间时(为了能通过下标访问),则需要通过push_back()手动分配:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> result;
        recursion(root,result,0);       //从0层开始,因为时使用数组离开存储的

        return result;

    }
    void recursion(TreeNode *root,vector<vector<int>> &res,int depth){
        if(root==nullptr)
            return;
        
        if(depth>=res.size()){

            res.push_back(vector<int>());  //二维的vector的元素室一维数组,插入新元素是插入一个一维数组。因此需要扩充二维vector容量。只有这样才能够使用res[x];
        }

        res[depth].push_back(root->val);
        recursion(root->left,res,depth+1);
        recursion(root->right,res,depth+1);
        //res[depth].push_back(root->val); 放在第30行和第33行在bfs中没有影响

    }
};

参考文章:https://lishizheng.blog.csdn.net/article/details/105862560?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值