vector容器用法

前言

大家好,今天是11.3,对了,我今天生日!先祝我生日快乐

回到主题,用法系列n天没更新了,总之,我们先看看他的函数和创建方法吧

创建方法

首先我们需要输入头文件vector,就像这样:

#include <vector>

如果你想创建一个int类型名为Myvector的容器,它的方法是这样的

vector<int> Myvector

所以他的格式是

vector<类型> 容器名

函数

1.push_back()

这个函数需要一个参数来插入到容器的第一项,比如以刚刚的容器举例:

Myvector.push_back(3);

这行代码就是把3插入到第一项

2.insert()

这个函数需要两个参数,前一个参数是插入的数,后一个是插入的位置,比如

 Myvector = { 1,3 };
 auto it = Myvector.begin() + 1;
 Myvector.insert(it, 2);

就是把2插入在第2项,为什么不直接使用函数,非要使用指针呢?因为这个函数的第一项必须是一个迭代器,关于迭代器的知识呢,我等有空会讲。总之,你只需要知道,需要使用这个方法就行了

3.erase()

这个函数的使用方法跟insert差不多,参数也是两个,比如

std::vector<int> v = {1, 2, 3};
auto it = v.begin() + 1;
v.erase(it);

就是把容器的第2项删除

4.at()

这个函数比较冷门,有1个参数,用来侦测该容器的第参数个是否越界,否则返回该数值,比如

try {
    int element = Myvector.at(4);
    std::cout << element << std::endl;
}
catch (std::out_of_range& e) {
    std::cerr << "Out of range error: " << e.what() << std::endl;
}

这个代码就是访问Myvector容器的第4个数是否可以访问,如果可以,打印这个数,否则打印错误消息,这个try catch语句也是有空再讲的

5.front()和back()

这两个函数分别是访问第一项和最后一项,比如

Myvector = { 1,2,3,4 };
printf("%d,%d", Myvector.front(), Myvector.back());

输出的就是1和4

6.size()

这个函数的作用是返回它的项数,比如

Myvector = { 1,2,3,4 };
printf("%d",Myvector.size());

打印的就是4,但这样呢不安全,所以你可以用cast强转的方式来,比如

Myvector = {1, 3};
int size = static_cast<int>(Myvector.size());
printf("%d\n", size);

cast的用法有空会说(话说我已经说过3次这句话了)

7.empty()

顾名思义,这个函数用于侦测容器是否为空比如

 std::vector<int> Myvector;
 if (Myvector.empty()) {
     printf("Myvector is empty");
 }

这个代码就会输出"Myvector is empty"这句话

8.capacity()

这个跟size()差不多比如

std::vector<int> Myvector = { 1,2,3,4 };
printf("%d", Myvector.capacity());

会输出4,而且为了安全也需要强转

9.clear()

这个函数会把容器的所有项删除,比如配合empty函数

std::vector<int> Myvector = { 1,2,3,4,5,6,7,8,9,10 };
Myvector.clear();
printf("%d", Myvector.empty());

最后输出的是0(false)

10.resize()

这个函数相当于设定容器的项数,比如

 std::vector<int> Myvector = { 1,2 };
 Myvector.resize(5);
 for (auto elem : Myvector) {
     std::cout << elem << " ";
 }

这个代码输出的就是"1 2 0 0 0"

综合

我们根据这些函数写个例子

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>

class ArrayManager {
private:
    std::vector<int> arr;

public:
    void add(int value) {
        arr.push_back(value);
        std::cout << "Added " << value << " to the array." << std::endl;
    }

    void remove(int value) {
        auto it = std::find(arr.begin(), arr.end(), value);
        if (it != arr.end()) {
            arr.erase(it);
            std::cout << "Removed " << value << " from the array." << std::endl;
        }
        else {
            std::cout << value << " not found in the array." << std::endl;
        }
    }

    void printArray() {
        std::cout << "Array elements: ";
        for (int num : arr) {
            std::cout << num << " ";
        }
        std::cout << std::endl;
    }
};

int main() {
    ArrayManager manager;
    int choice;
    int value;
    bool continueOperation = true;

    while (continueOperation) {
        std::cout << "1. Add element\n2. Remove element\n3. Print array\n4. Exit to main menu\nEnter your choice: ";
        std::cin >> choice;

        switch (choice) {
        case 1:
            std::cout << "Enter value to add: ";
            std::cin >> value;
            manager.add(value);
            break;
        case 2:
            std::cout << "Enter value to remove: ";
            std::cin >> value;
            manager.remove(value);
            break;
        case 3:
            manager.printArray();
            break;
        case 4:
            std::cout << "Returning to main menu." << std::endl;
            continueOperation = false;
            break;
        default:
            std::cout << "Invalid choice." << std::endl;
        }
    }

    std::cout << "Exiting program..." << std::endl;
    return 0;
}

这个代码很简单,大家可以先自己研究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值