C++ vector 的增删改查
时间: 2023-12-23 14:04:42 浏览: 269
C++ vector是一种动态数组,可以在运行时动态地增加或减少其大小。下面是关于C++ vector的增删改查的介绍:
1. 增加元素:
- push_back()函数:在vector的末尾添加一个元素。
- insert()函数:在指定位置插入一个或多个元素。
2. 删除元素:
- erase()函数:删除指定位置的一个或多个元素。
3. 修改元素:
- 直接通过下标访问元素,然后进行修改。
4. 查找元素:
- find()函数:在vector中查找指定元素,返回指向该元素的迭代器。
- 也可以通过下标访问元素,然后进行查找。
注意:在进行增删改查操作时,需要注意vector的迭代器失效问题。
相关问题
用c++实现增删改查
下面是一个简单的例子,演示了如何用C++实现增删改查:
```c++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Student {
string name;
int age;
string gender;
};
vector<Student> students;
// 添加学生信息
void addStudent() {
Student stu;
cout << "请输入学生姓名:";
cin >> stu.name;
cout << "请输入学生年龄:";
cin >> stu.age;
cout << "请输入学生性别:";
cin >> stu.gender;
students.push_back(stu);
cout << "添加成功!" << endl;
}
// 删除学生信息
void deleteStudent() {
string name;
cout << "请输入要删除的学生姓名:";
cin >> name;
for (auto it = students.begin(); it != students.end(); it++) {
if (it->name == name) {
students.erase(it);
cout << "删除成功!" << endl;
return;
}
}
cout << "未找到该学生信息!" << endl;
}
// 修改学生信息
void modifyStudent() {
string name;
cout << "请输入要修改的学生姓名:";
cin >> name;
for (auto& stu : students) {
if (stu.name == name) {
cout << "请输入学生新姓名:";
cin >> stu.name;
cout << "请输入学生新年龄:";
cin >> stu.age;
cout << "请输入学生新性别:";
cin >> stu.gender;
cout << "修改成功!" << endl;
return;
}
}
cout << "未找到该学生信息!" << endl;
}
// 查询学生信息
void queryStudent() {
string name;
cout << "请输入要查询的学生姓名:";
cin >> name;
for (auto& stu : students) {
if (stu.name == name) {
cout << "姓名:" << stu.name << endl;
cout << "年龄:" << stu.age << endl;
cout << "性别:" << stu.gender << endl;
return;
}
}
cout << "未找到该学生信息!" << endl;
}
int main() {
while (true) {
cout << "请选择操作:1.添加 2.删除 3.修改 4.查询 5.退出" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
addStudent();
break;
case 2:
deleteStudent();
break;
case 3:
modifyStudent();
break;
case 4:
queryStudent();
break;
case 5:
return 0;
default:
cout << "输入错误,请重新选择!" << endl;
}
}
return 0;
}
```
上面的代码使用了vector来存储学生信息,通过遍历vector来实现增删改查。其中,使用了结构体来表示学生信息。在添加、删除和修改时,通过遍历vector来查找要操作的学生信息;在查询时,同样遍历vector,根据输入的姓名来查找学生信息。
使用C++自定义类模拟vector的增删改查
你可以创建一个自定义类来模拟vector的增删改查操作。下面是一个简单的示例:
```cpp
#include <iostream>
class MyVector {
private:
int* data; // 存储元素的数组
int size; // 当前元素个数
int capacity; // 数组容量
public:
MyVector() {
size = 0;
capacity = 10;
data = new int[capacity];
}
~MyVector() {
delete[] data;
}
void push_back(int element) {
if (size == capacity) {
expandCapacity();
}
data[size] = element;
size++;
}
void pop_back() {
if (size > 0) {
size--;
}
}
int& operator[](int index) {
if (index >= 0 && index < size) {
return data[index];
}
throw std::out_of_range("Index out of range");
}
int getSize() {
return size;
}
private:
void expandCapacity() {
capacity *= 2;
int* newData = new int[capacity];
for (int i = 0; i < size; i++) {
newData[i] = data[i];
}
delete[] data;
data = newData;
}
};
int main() {
MyVector vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
std::cout << "Size: " << vec.getSize() << std::endl;
for (int i = 0; i < vec.getSize(); i++) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
vec.pop_back();
std::cout << "Size: " << vec.getSize() << std::endl;
for (int i = 0; i < vec.getSize(); i++) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
这个示例中,自定义的MyVector类使用动态数组来存储元素。它提供了push_back()和pop_back()函数来实现尾部插入和删除元素的功能。重载了[]运算符,可以通过索引访问元素。getSize()函数返回当前元素个数。
在主函数中,我们创建了一个MyVector对象`vec`,并使用push_back()函数插入了一些元素。然后通过getSize()函数获取当前元素个数,并通过重载的[]运算符遍历并输出元素。接着使用pop_back()函数删除了最后一个元素,并再次输出当前元素个数和元素列表。
请注意,这只是一个简单的示例,实际应用中可能需要更多的功能和错误处理。
阅读全文