C++中vector的用法实例解析
什么是vector
vector是C++ STL(Standard Template Library)中的一个容器,它是一个动态数组,可以自动扩展空间,并提供随机访问和快速尾部插入/删除等操作。vector内部存储的元素在内存中是连续存储的,因此可以通过数组下标直接访问元素,效率非常高。
vector的基本用法
创建一个vector对象
#include <vector>
using namespace std;
vector<int> vec; // 创建一个空的vector
vector<int> vec(10); // 创建一个包含10个元素的vector,初始值全部为0
vector<int> vec(10, 1); // 创建一个包含10个元素的vector,初始值全部为1
访问vector中的元素
vector<int> vec = {1, 2, 3, 4, 5};
int value = vec[0]; // 通过下标访问元素,注意下标越界的情况
int value2 = vec.at(1); // 使用at()方法访问元素,会进行越界检查
int back_value = vec.back(); // 访问尾部元素
int front_value = vec.front(); // 访问头部元素
int* data_ptr = vec.data(); // 获取指向内存中存储元素的指针
向vector中添加/删除元素
vector<int> vec = {1, 2, 3, 4, 5};
vec.push_back(6); // 在尾部插入元素
vec.pop_back(); // 删除尾部元素
vec.insert(vec.begin()+2, 10); // 在第三个位置插入元素10
vec.erase(vec.begin()+1); // 删除第二个位置的元素
vec.clear(); // 删除所有元素,使vector变为空
示例1:使用vector实现队列
下面是一个使用vector实现队列的示例,其中包括了队列的入队、出队、查询队首元素等操作。
#include <iostream>
#include <vector>
using namespace std;
class Queue {
public:
Queue() {}
bool empty() const {
return data.empty();
}
int size() const {
return data.size();
}
void push(int num) {
data.push_back(num);
}
void pop() {
if (!empty()) {
data.erase(data.begin());
}
}
int front() {
if (!empty()) {
return data.front();
} else {
return -1;
}
}
private:
vector<int> data;
};
int main() {
Queue q;
q.push(1);
q.push(2);
cout << q.front() << endl;
q.pop();
cout << q.front() << endl;
q.pop();
cout << q.empty() << endl;
return 0;
}
示例2:使用vector实现矩阵运算
下面是一个使用vector实现矩阵运算的示例,包括了矩阵加法、矩阵减法、矩阵乘法等操作。
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> matrixAdd(vector<vector<int>>& m1, vector<vector<int>>& m2) {
int row = m1.size(), col = m1[0].size();
vector<vector<int>> res(row, vector<int>(col));
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
res[i][j] = m1[i][j] + m2[i][j];
}
}
return res;
}
vector<vector<int>> matrixSubtract(vector<vector<int>>& m1, vector<vector<int>>& m2) {
int row = m1.size(), col = m1[0].size();
vector<vector<int>> res(row, vector<int>(col));
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
res[i][j] = m1[i][j] - m2[i][j];
}
}
return res;
}
vector<vector<int>> matrixMultiply(vector<vector<int>>& m1, vector<vector<int>>& m2) {
int row = m1.size(), col1 = m1[0].size(), col2 = m2[0].size();
vector<vector<int>> res(row, vector<int>(col2));
for (int i = 0; i < row; i++) {
for (int j = 0; j < col2; j++) {
for (int k = 0; k < col1; k++) {
res[i][j] += m1[i][k] * m2[k][j];
}
}
}
return res;
}
int main() {
vector<vector<int>> m1 = {{1, 2}, {3, 4}};
vector<vector<int>> m2 = {{5, 6}, {7, 8}};
vector<vector<int>> res1 = matrixAdd(m1, m2);
vector<vector<int>> res2 = matrixSubtract(m1, m2);
vector<vector<int>> res3 = matrixMultiply(m1, m2);
for (auto row : res1) {
for (auto num : row) {
cout << num << " ";
}
cout << endl;
}
for (auto row : res2) {
for (auto num : row) {
cout << num << " ";
}
cout << endl;
}
for (auto row : res3) {
for (auto num : row) {
cout << num << " ";
}
cout << endl;
}
return 0;
}
以上就是vector的用法实例解析,希望对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中vector的用法实例解析 - Python技术站