天天看点

简单的增,删,改,查操作(vector)

基本思想

1.增加

输入要增加的信息,直接用vector的push_back()

void Student::Add() {
	cout << "please input the add information" << endl << endl;
	Student s;//之前定义的学生类
	s.input();
	vec.push_back(s);
	print();//一个输出函数
}
           

2.查找

查找可以分很多种,比如,按学号查找,姓名查找等等,但核心思想都是一样,这里只介绍用姓名查找。首先,输入要查找的学生姓名,用迭代器iterator进行遍历一遍,然后 进行判断是否有相同,若有相同,输出该学生信息,跳出循环,若循环走完都没有找到直接输出“查无此人”。

cout << "please input the find name" << endl << endl;
	string na;
	cin >> na;
	int flag = 0;//用于标记是否找到
	for (it = vec.begin(); it != vec.end(); it++) {
		if (na == it->getname()) {
			it->output();
			flag = 1;
			break;
		}
	}
	if(!flag)
		cout << "查无此人" << endl;
           

3.修改

建立在查找的基础上,只不过是在遍历判断之后,若相同的话,在进行一次信息的输入,对原来的信息进行覆盖即可。若不同直接输出“本无此人”。

cout << "please input the change name" << endl << endl;
	string na;
	cin >> na;
	int flag = 0;
	for (it = vec.begin(); it != vec.end(); it++) {
		if (na == it->getname()) {
			cout << "please input the change information" << endl << endl;
			it->input();//直接覆盖
			flag = 1;
			break;
		}
	}
	if (!flag)
		cout << "查无此人" << endl;
           

4.删除

也是建立在查找的基础上,找到之后直接用erase(删除地址)进行删除,要注意erase的参数是要删除的信息的地址,可以用指针表示。

cout << "please input the delete name" << endl << endl;
	string na;
	cin >> na;
	int flag = 0;
	for (it = vec.begin(); it != vec.end(); it++) {
		if (na == it->getname()) {
			vec.erase(it);
			flag = 1;
			break;
		}
	}
	if (!flag)
		cout << "查无此人" << endl;
           

最后,给个全代码吧,但希望大家最好还是自己想之后进行打出代码,不能一味的抄袭别人的代码,但是我也很懂代码打不出来时候的难受,所以给个全代码仅限参考。(一起加油!!!)

// 数据结构1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class Student {
	string name;
	float usual, finnal, aver;
public:
	vector<Student> vec;
	vector<Student>::iterator it;
	Student(string na="0", float u=0, float f=0) { name = na; usual = u; finnal = f; }
	string getname() { return name; }
	void input();
	void Init(Student &s);//录入
	float compute(float u, float f) { aver = (u + f)/2; return aver; }
	void output();
	void print();
	void Add();
	void Delete();
	void Find();
	void Change();
};
void Student::input() {
	cin >> name >> usual >> finnal;
}
void Student::Init(Student &s) {
	cout << "Please input name,usual,finnal" << endl << endl;
	s.input();
	vec.push_back(s);
}
void Student::output() {
	compute(usual, finnal);
	cout << name << " " << usual << " " << finnal <<" "<<aver<< endl;
}
void Student::print() {
	for (it = vec.begin(); it != vec.end(); it++)
		//(*it).output();
		it->output();
}
void Student::Add() {
	cout << "please input the add information" << endl << endl;
	Student s;
	s.input();
	vec.push_back(s);
	print();
}
void Student::Delete() {
	cout << "please input the delete name" << endl << endl;
	string na;
	cin >> na;
	int flag = 0;
	for (it = vec.begin(); it != vec.end(); it++) {
		if (na == it->getname()) {
			vec.erase(it);
			flag = 1;
			break;
		}
	}
	if (!flag)
		cout << "查无此人" << endl;
	print();
}
void Student::Find() {
	cout << "please input the find name" << endl << endl;
	string na;
	cin >> na;
	int flag = 0;
	for (it = vec.begin(); it != vec.end(); it++) {
		if (na == it->getname()) {
			it->output();
			flag = 1;
			break;
		}
	}
	if(!flag)
		cout << "查无此人" << endl;
}
void Student::Change() {
	cout << "please input the change name" << endl << endl;
	string na;
	cin >> na;
	int flag = 0;
	for (it = vec.begin(); it != vec.end(); it++) {
		if (na == it->getname()) {
			cout << "please input the change information" << endl << endl;
			it->input();//直接覆盖
			flag = 1;
			break;
		}
	}
	if (!flag)
		cout << "查无此人" << endl;
	print();
}


int main()
{
	Student s1, s2, s3;
	Student s;
	s.Init(s1);
	s.Init(s2);
	s.Init(s3);
	s.print();
	s.Add();
	s.Change();
	s.Delete();
	s.Find();
	system("pause");
    return 0;
}


           

继续阅读