vector<int>是什么?
是更灵活和方便的容器,适用于动态大小的数组需求,而数组则适用于固定大小的数组需求,或者在特定场景下对性能有要求的情况。内部使用连续的、按照顺序排列的存储空间来存储元素,在索引访问元素时可以直接通过指针计算元素地址,因此访问速度较快。可以在运行时动态地调整大小,并且支持快速随机访问元素,可以在尾部插入或删除元素,也可以在中间插入或删除元素。是使用 C++ 中的数组来创建一个固定大小的整数类型数组,该
vector nums = {1, 2, 3, 1, 4, 5, 2, 1, 4};和int nums[]={1, 2, 3, 1, 4, 5, 2, 1, 4};的区别是什么?
vector<int> nums = {1, 2, 3, 1, 4, 5, 2, 1, 4};
是使用 C++ 中的 vector
容器来创建一个整数类型的动态数组,该数组的元素为 {1, 2, 3, 1, 4, 5, 2, 1, 4}
。
而 int nums[] = {1, 2, 3, 1, 4, 5, 2, 1, 4};
是使用 C++ 中的数组来创建一个固定大小的整数类型数组,该数组的元素为 {1, 2, 3, 1, 4, 5, 2, 1, 4}
。
主要区别如下:
- 容器类型不同:
vector
是 C++ 中的标准库容器,可以动态调整大小,提供更多的方法和功能。而数组是一种原生的数据结构,大小在创建时就确定,并且没有内置的方法或函数来方便地操作。 - 内存管理方式不同:
vector
内部使用堆(Heap)来存储元素,会自动进行内存管理,当添加或删除元素时会自动调整分配的内存空间。而数组是在栈(Stack)上分配连续的内存空间,长度一经确定,不可改变。使用堆,而且在栈上分配空间> - 传递方式不同:
vector
可以作为函数参数进行传递,而数组在作为函数参数时会自动转换为指针,传递的是指向数组首元素的指针。voertor可以做为参数,而一般数组可能不可以,就是vector可以把自身转化为指针> - 使用的成员函数和操作方式不同:
vector
提供了一系列成员函数和方法,如push_back()
、pop_back()
、size()
等来操作其中的元素。而数组使用索引访问元素,没有类似size()
这样的方法。
还有就是vector有很多操作方法,可以更加快速的对数组进行操作>
总的来说,vector
是更灵活和方便的容器,适用于动态大小的数组需求,而数组则适用于固定大小的数组需求,或者在特定场景下对性能有要求的情况。
vector
vector
是 C++ 标准库中的一个动态数组容器(Dynamic Array Container),可以看作是 C++ 的数组增强版。
vector
可以在运行时动态地调整大小,并且支持快速随机访问元素,可以在尾部插入或删除元素,也可以在中间插入或删除元素。vector
内部使用连续的、按照顺序排列的存储空间来存储元素,在索引访问元素时可以直接通过指针计算元素地址,因此访问速度较快。
vector
定义在 <vector>
头文件中,使用时需要包含这个头文件。下面是一个简单示例:
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec; // 创建一个 int 类型的 vector
vec.push_back(1); // 在 vector 尾部添加一个元素 1
vec.push_back(2); // 在 vector 尾部添加一个元素 2
vec.push_back(3); // 在 vector 尾部添加一个元素 3
std::cout << "vector 中的元素为:";
for (int i = 0; i < vec.size(); ++i) {
std::cout << vec[i] << " "; // 访问 vector 中的元素
}
std::cout << std::endl;
return 0;
}
上述代码中,我们首先创建了一个 vector
对象 vec
,并使用 push_back()
方法在尾部添加了三个元素。然后,我们使用 size()
方法获取 vector
中元素的个数,使用循环和索引访问方式依次输出了所有元素。注意,不能使用越界的方式访问 vector
中的元素,否则会导致程序崩溃。
总之,vector
是一个非常实用的容器,能够方便地管理数组动态大小,并且拥有许多便捷的操作函数,适用于许多编程场景。
vector的方法
vector
是 C++ STL 中的一个标准容器(Standard Container),提供了一系列的方法来管理和操作动态数组。
下面是 vector
常用的方法介绍:
-
push_back()
:在vector
的尾部添加新元素,可以用于向vector
中添加元素。push_back用于在尾部添加元素 -
pop_back()
:删除vector
尾部的元素,可以用于从vector
中删除元素。和push_back一样删除元素就是pop_back()我猜pop是移除 -
insert()
:在指定位置插入一个或多个元素,可以用于向vector
中插入新元素。前面push_back和pop_back()这俩函数都是在尾部进行操作而insert是在任意位置,
-
erase()
:删除指定位置或区间内的元素,可以用于从vector
中移除元素。
这个erase()不用看我就知道这个是在任意位置删除元素 -
clear()
:清空vector
中所有的元素,可以用于释放动态数组的内存。释放内存就是vector是个容器要占用一定内存,用clear就可以释放一定内存,可以增加运行效率
-
size()
:返回vector
中元素的个数,可以用于获取vector
中元素的长度。size()名字就是长度,那么就是检查vector里面的长度
-
capacity()
:返回此时vector
内部分配的存储空间,可以用于获取vector
的容量(Capacity)。
很少用?返回占用多少内存 -
reserve()
:预留指定数量的存储空间,可以用于优化vector
内存管理性能。
对于已经确定要多少内存先把其预留可以增加速度 -
operator[]
:使用类似数组下标的方式访问vector
中的元素。
保留数组样式 -
at()
:安全的访问vector
中的元素,会进行越界检查。 -
front()
:返回vector
中的第一个元素。 -
back()
:返回vector
中的最后一个元素。 -
begin()
:返回指向vector
的第一个元素的迭代器(Iterator)。 -
end()
:返回指向vector
结尾的迭代器,指向的是最后一个元素的下一个位置。
上述方法只是 vector
中的一部分,还有其它很多方法可以用于访问和操作 vector
的元素。可以通过查看 C++ STL 官方文档或者使用 IDE 提供的自动补全功能来了解更多相关方法的用法和细节。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)