0
点赞
收藏
分享

微信扫一扫

c++进阶学习笔记--vector的使用

萍儿的小确幸 2022-02-16 阅读 98
c++算法
int main()
{
	vector<int> arr; //vector是个类模板,并且是数组(个人感觉是栈),所以需要特化类型,目前这样定义的组arr为空
	arr.push_back(2);  //push_back是从后往前传
	arr.push_back(1);
	arr.push_back(0);
	cout << arr[0] << endl;		//2
	cout << arr[1] << endl;		//1	
	cout << arr[2] << endl;		//0
	arr.pop_back();  //删除最后一个
	arr.push_back(3);
	cout << arr[2] << endl;     //3

	sort(arr.begin(), arr.end());  //sort对数组进行排序,默认为升序//begin是数组开头的那个元素,end是最后一个元素的下一个
	//打一下看一下
	int i;
	for (i = 0; i < 3; i++)
	{
		cout << arr[i] << endl;
	}
}

在对于其简单了解之后,我们定义一个student类这样的无法被常规排序的来试试

#pragma once
#include<string>
#include<iostream>
using namespace std;
class student
{
private:
	int id;
	string name;
public:
	student(const string& name, int id);
	int getId()const;
	void introduce()const;
};
#include"student.h"
student::student(const string& name, int id):name(name),id(id)
{}

int student::getId() const
{
	return id;
}

void student::introduce() const
{
	cout << id << ":" << name << endl;
}
#include<vector>
#include<algorithm>  //sort

using namespace std;

bool stucmp(const student& stu1,const student& stu2)
{
	return stu1.getId() > stu2.getId();
}

void test()
{
	vector<student> stus;
	int i;
	for (i = 0; i < 10; i++)
	{
		student stu("Sechs", i);  //构造一个学生(name,id)
		stus.push_back(stu);   //录入stus数组
	}
	//尝试对其进行sort排序的话就会报错;因为我定义的学生类是无法排序的
	//sort(stus.begin(),stus.end());
	//所以在此的解决办法最简单的就是写一个函数来实现对学生的顺序比较(当然这其中应该又自己的标准),我么把他写在前面
	sort(stus.begin(), stus.end(),stucmp);  //此时在定义之后 sort尾部加一个函数指针就可以了
	for (i = 0; i < 10; i++)
	{
		stus[i].introduce();  //输出看一下
	}
}
int main()
{
    test();//调用一下
}
举报

相关推荐

0 条评论