C++STL教程之vector模板的使用
什么是vector?
vector是C++标准库中的一种容器,可以看作是包含一组元素的动态数组。与C-style数组相比,vector有许多好处:
- 可以动态调整数组大小,无需手动分配内存
- 便于元素的插入和删除操作
- 支持自动内存管理,避免内存泄漏等问题
在使用vector之前,需要引入头文件 #include<vector>
。
如何创建vector?
可以使用以下方式创建一个vector对象:
vector<int> v1; // 创建一个int类型的空vector
vector<double> v2(10); // 创建一个含有10个double类型元素的vector
vector<string> v3(5, "hello"); // 创建一个含有5个字符串"hello"的vector
如何访问vector中的元素?
可以使用下标运算符([]
)或迭代器来访问vector中的元素。例如:
vector<int> v1 = {1, 2, 3, 4, 5};
int x = v1[0]; // 访问第一个元素
int y = v1.at(1); // 访问第二个元素
vector<int>::iterator it = v1.begin(); // 创建一个指向第一个元素的迭代器
如何修改vector中的元素?
可以使用下标运算符或迭代器来修改vector中的元素。例如:
vector<int> v1 = {1, 2, 3, 4, 5};
v1[0] = 10; // 修改第一个元素的值
vector<int>::iterator it = v1.begin();
*it = 20; // 修改第一个元素的值
如何在vector中添加元素?
可以使用push_back
函数在vector的末尾添加一个元素。例如:
vector<int> v1 = {1, 2, 3};
v1.push_back(4); // 在末尾添加一个元素4
v1.push_back(5); // 在末尾添加一个元素5
如何在vector中删除元素?
可以使用pop_back
函数删除vector末尾的元素,或使用erase
函数删除指定位置或指定区间的元素。例如:
vector<int> v1 = {1, 2, 3, 4, 5};
v1.pop_back(); // 删除末尾的元素5
v1.erase(v1.begin() + 1); // 删除第二个元素2
v1.erase(v1.begin() + 1, v1.begin() + 3); // 删除第二个和第三个元素
示例一:使用vector实现栈
#include <iostream>
#include <vector>
using namespace std;
class Stack {
private:
vector<int> v;
public:
void push(int x) {
v.push_back(x);
}
void pop() {
v.pop_back();
}
int top() {
return v.back();
}
bool empty() {
return v.empty();
}
};
int main() {
Stack s;
s.push(1);
s.push(2);
s.push(3);
while (!s.empty()) {
cout << s.top() << endl;
s.pop();
}
return 0;
}
示例二:使用vector实现二分查找
#include <iostream>
#include <vector>
using namespace std;
int binary_search(vector<int>& v, int x) {
int left = 0, right = v.size() - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (v[mid] == x) {
return mid;
} else if (v[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
vector<int> v = {1, 3, 5, 7, 9};
int index = binary_search(v, 5);
if (index == -1) {
cout << "not found" << endl;
} else {
cout << "found at index " << index << endl;
}
return 0;
}
以上就是关于vector模板的使用的基本攻略,希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++STL教程之vector模板的使用 - Python技术站