寒假训练营(数据结构1)

在数据结构中是有链表,树,图等几种基本类型

vector

在c++语言中使用vector时要先使用头文件:

#include<vector>

1初始化

如果vector的元素类型是int,默认初始化为0;如果vector元素类型为string,则默认初始化为空字符串。

vector<int> v1;
vector<father> v2;
vector<string> v3;
vector<vector<int> >;  //注意空格。这里相当于二维数组int a[n][n];
vector<int> v5 = { 1,2,3,4,5 }; //列表初始化,注意使用的是花括号
vector<string> v6 = { "hi","my","name","is","lee" };
vector<int> v7(5, -1); //初始化为-1,-1,-1,-1,-1。第一个参数是数目,第二个参数是要初始化的值
vector<string> v8(3, "hi");
vector<int> v9(10); //默认初始化为0
vector<int> v10(4); //默认初始化为空字符串

2添加元素

可以使用push_back函数向vector中添加函数,且被添加的元素存在于vector末尾,并为新元素开辟新的内存空间

for (int i = 0; i < 20; i++)
{
    v1.push_back(i);
}

且vector中的元素访问与数组中的元素访问类似,需要注意的是,vector中必须访问的是已存在元素的下标

3插入元素

#include <iostream> 
#include <vector> 
#include <array> 
using namespace std;
int main()
{
    std::vector<int> demo{1,2};
    //第一种格式用法
    demo.insert(demo.begin() + 1, 3);//{1,3,2}
 
    //第二种格式用法
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
 
    //第三种格式用法
    std::array<int,3>test{ 7,8,9 };
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
 
    //第四种格式用法
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
 
    for (int i = 0; i < demo.size(); i++) {
        cout << demo[i] << " ";
    }
    return 0;
}

4删除元素

前面提到,无论是向现有 vector 容器中访问元素、添加元素还是插入元素,都只能借助 vector 模板类提供的成员函数,但删除 vector 容器的元素例外,完成此操作除了可以借助本身提供的成员函数,还可以借助一些全局函数。

基于不同场景的需要,删除 vecotr 容器的元素,可以使用下表 中所示的函数(或者函数组合)。

#include <vector>
#include <iostream>
using namespace std;
 
int main()
{
    vector<int>demo{ 1,2,3,4,5 };
    demo.pop_back();
    //输出 dmeo 容器新的size
    cout << "size is :" << demo.size() << endl;
    //输出 demo 容器新的容量
    cout << "capacity is :" << demo.capacity() << endl;
    for (int i = 0; i < demo.size(); i++) {
        cout << demo[i] << " ";
    }
    return 0;
}

可以发现,相比原 demo 容器,新的 demo 容器删除了最后一个元素 5,容器的大小减了 1,但容量没变。

如果想删除 vector 容器中指定位置处的元素,可以使用 erase() 成员函数,该函数的语法格式为:

iterator erase (pos);
对于2025年的牛客寒假训练营的具体信息,包括介绍、报名时间、地点以及课程安排等细节,在当前提供的资料中没有直接提及。通常情况下,这类活动会提前几个月公布相关信息。 为了获取最准确的信息,建议访问牛客网官方网页或者关注牛客网的社交媒体账号以获得最新的公告和更新。此外,往届的牛客寒假训练营一般会在网上留下一些痕迹,比如参与者的反馈、课程大纲或是相关的技术文章,这些都可以提供一定的参考价值。 由于具体详情尚未公开,以下是一些可能的情况供参考: - **介绍**:牛客寒假训练营通常是面向有兴趣提高编程技能的学生和技术爱好者设计的一系列培训课程。参与者可以通过解决实际问题来学习算法技巧和其他计算机科学主题。 - **报名时间**:一般来说,报名可能会开放在前一年的秋季至冬季之间,例如10月至12月期间。具体的日期需要等待官方通知。 - **地点**:考虑到近年来远程工作的普及,训练营有可能采取线上形式举办;也可能是线上线下相结合的方式,线下部分则会选择在中国的主要城市举行。 - **课程安排**:以往的经验表明,课程内容涵盖从基础知识到高级话题的不同层次,并且会有实战练习环节帮助学员巩固所学的知识点。每天的日程表上除了授课之外还设有答疑时间和自由讨论时段。 请注意以上只是基于历史模式推测而来,确切的消息应该参照官方网站发布的最新资讯为准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值