vector<int> 的用法

vector<int> 是 C++ 标准模板库(STL)中的一个容器,用于存储动态大小的整数序列。以下是它的主要用法:

基本操作

1. 创建和初始化

#include <vector>
using namespace std;

vector<int> v1;             // 空vector
vector<int> v2(5);          // 包含5个0
vector<int> v3(5, 10);      // 包含5个10
vector<int> v4 = {1, 2, 3}; // 初始化列表(C++11)
vector<int> v5(v4);         // 拷贝构造

2. 添加元素

v1.push_back(10);      // 在末尾添加元素10
v1.emplace_back(20);   // 更高效的添加方式(C++11)
v1.insert(v1.begin(), 5); // 在开头插入5

3. 访问元素

int a = v1[0];         // 不检查边界
int b = v1.at(1);      // 检查边界,越界抛出异常
int c = v1.front();    // 第一个元素
int d = v1.back();     // 最后一个元素

4. 删除元素

v1.pop_back();         // 删除最后一个元素
v1.erase(v1.begin());  // 删除第一个元素
v1.erase(v1.begin(), v1.begin()+2); // 删除前两个元素
v1.clear();            // 清空所有元素

5. 容量和大小

int size = v1.size();      // 元素数量
bool empty = v1.empty();   // 是否为空
v1.resize(10);             // 调整大小
int cap = v1.capacity();   // 当前分配的存储容量
v1.reserve(100);           // 预留空间

常用方法

遍历vector

// 使用下标
for (size_t i = 0; i < v1.size(); ++i) {
    cout << v1[i] << " ";
}

// 使用迭代器
for (auto it = v1.begin(); it != v1.end(); ++it) {
    cout << *it << " ";
}

// 范围for循环(C++11)
for (int num : v1) {
    cout << num << " ";
}

排序

#include <algorithm>
sort(v1.begin(), v1.end()); // 升序
sort(v1.rbegin(), v1.rend()); // 降序

查找

auto it = find(v1.begin(), v1.end(), 10);
if (it != v1.end()) {
    // 找到元素
}

高级用法

二维vector

vector<vector<int>> matrix(3, vector<int>(4)); // 3行4列矩阵
matrix[0][1] = 5; // 访问元素

交换两个vector

vector<int> v6 = {1, 2, 3};
vector<int> v7 = {4, 5, 6};
v6.swap(v7); // 交换内容

移动语义(C++11)

vector<int> v8 = std::move(v7); // 移动而非拷贝

性能提示

  1. 预先使用reserve()可以减少动态内存分配次数

  2. emplace_back()push_back()更高效

  3. 删除中间元素会导致后续元素移动,效率较低

vector<int> 是C++中最常用的容器之一,提供了动态数组的功能,同时保持了高效的随机访问能力。

这是一个软件界面翻译的小工具,对于英文不好的同学应该会有点帮助。英文好的就不要看了。最因为是调用网页接口翻译,使用必须联网 ====================================================== 经过几天的反响,我更新了下软件,做个详细的使用情况吧 1。有好多人说,有的程序只能翻译极个别的按钮或者其他的,大部分不能翻译。这种情况是,因为软件是根据窗口句柄内容进行翻译,你的软件翻译不了,那就是无法获取你的软件的句柄,你的软件极有可能是自绘的或者其他未知。本人目前没有办法解决。(你可以采取截图识别翻译,再逐个对照) 2.有人说翻译的内容太牵强。因为是机器在线翻译,本人也无法解决。只能靠个人理解能力了。 3.有人说截图识别卡顿。因为截图有大小限制,你截的太小是不会上传的,太大又因为要识别的内容太多,所有卡慢。跟我软件没有关系,跟你的网速有关。 4.为了美观增加了皮肤和增加的一个划词翻译选项。 5.划词翻译选项尽量在必要时选中,不需要时取消勾选。因为原理和系统鼠标左右键操作有点冲突(问题不是太大)如果你不介意可以随意。 6.已翻译内容框,当你翻译好后点击要复制的时候,划词翻译会暂停9秒(这个时间段划词是不会有反应的。)过了9秒正常划词。当然你可以随时勾选界面上的划词开启的勾来操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值