目录
种一棵树最好的时间是10年前,其次是现在!加油学啊!
1.什么是vector
在C++中,std::vector是标准模板库(STL)中的一种动态数组容器,它可以存储任意类型的元素,并且能够自动调整大小。std::vector提供了许多方便的成员函数,使得对数组的操作更加简单和高效。 相当于数据结构中的顺序表
下面是一个使用std::vector的简单示例:三种遍历方法
#include<iostream>
#include<vector>
using namespace std;
void test_vector1()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
//数组下标
for (size_t i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl;
//范围for
for (auto e : v)
{
cout << e << " ";
}
cout << endl;
//迭代器
vector<int>::iterator it = v.begin();
while (it != v.end())
{
cout << *it << " ";
it++;
}
cout << endl;
}
int main()
{
test_vector1();
return 0;
}
2.vector的使用
2.1 vector构造函数
explicit vector (const allocator_type& alloc = allocator_type());
//构造一个空容器,不包含任何元素。
explicit vector (size_type n, const value_type& val = value_type(),
const allocator_type& alloc = allocator_type());
//构造一个包含n 个元素的容器。每个元素都是val的副本。
template <class InputIterator>
vector (InputIterator first, InputIterator last,
const allocator_type& alloc = allocator_type());
//构造一个包含与范围[first,last)一样多的元素的容器,其中每个元素均从该范围内的相应元素按相同的顺序构造。
vector (const vector& x);//构造一个容器,其中包含x中每个元素的副本(按相同顺序)。
例子
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
//构造函数的使用顺序与上述相同:
vector<int> first; // 默认构造
vector<int> second (4,100); // 初始化四个值为 100 的整数
vector<int> third (second.begin(),second.end()); // 使用迭代器的拷贝
vector<int> fourth (third); // 拷贝构造
return 0;
}
2.2 赋值运算符的重载
vector& operator= (const vector& x);
该运算符重载函数使得两个 std::vector 对象的内容相同,但是它们是独立的,修改一个对象不会影响另一个对象。
std::vector<int> vec1 = {1, 2, 3, 4};
std::vector<int> vec2 = {5, 6, 7};
vec1 = vec2; // 将 vec2 的内容赋值给 vec1
在上面的示例中,vec1 的内容将变成 {5, 6, 7},与 vec2 相同。vec2 本身不受影响。
2.3 迭代器的使用
iterator begin():: 返回一个指向 std::vector 容器中第一个元素的可修改迭代器。通过这个迭代器,可以对容器中的元素进行修改。
const_iterator begin() const:: 返回一个指向 std::vector 容器中第一个元素的常量迭代器。通过这个迭代器,可以遍历容器中的元素,但不能对容器中的元素进行修改。
正向迭代器使用
#include<iostream>
#include<vector>
using namespace std;
void test_vector1()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
vector<int>::iterator it = v.begin();
while(it!=v.end())
{
cout << *it << " ";
it++;
}
cout << endl;
}
int main()
{
test_vector1();
}
reverse_iterator rbegin():: 返回一个指向 std::vector 容器中最后一个元素的可修改逆向迭代器。逆向迭代器是一种特殊的迭代器,它可以从容器的末尾向前遍历元素。
const_reverse_iterator rbegin() const:: 返回一个指向 std::vector 容器中最后一个元素的常量逆向迭代器。通过这个逆向迭代器,可以从容器的末尾向前遍历元素,但不能对容器中的元素进行修改
反向迭代器的使用
#include<iostream>
#include<vector>
using namespace std;
void test_vector1()
{
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
vector<int>::reverse_iterator rit = v.rbegin();
//auto rit =v.rbegin(); 也可以这么写
while(rit!=v.rend())
{
cout << *rit << " ";
rit++;
}
cout << endl;
}
int main()
{
test_vector1();
}
cbegin(): 返回指向 std::vector 容器中第一个元素的常量迭代器。
cend(): 返回指向 std::vector 容器中最后一个元素之后位置的常量迭代器。
crbegin(): 返回指向 std::vector 容器中最后一个元素的常量逆向迭代器。
crend(): 返回指向 std::vector 容器中第一个元素之前位置的常量逆向迭代器。
vector容量函数
容量空间
|
接口说明
|