C++中list的使用,及使用list来实现java中的ArrayList

使用过java的小伙伴一定学习过ArrayList这个集合,java给我们提供了丰富的操作,但是C++里只能自己造轮子,因此学习了C++中list的使用,下面分享一些常用的相关操作。
有些操作还未实现,待后期完善。

#include <iostream>
#include <list>  // 引入list模块
using namespace std;
// 太多文章都是使用最基本的int类型,使用对象的很少
// 因此本文使用对象的list,这样更符合java的ArrayList操作

// 定义,存放Student对象指针
list<Student*> students;

Student *stu1,*stu2,*stu3;
stu1 = new Student("张三",18,"北京");
stu2 = new Student("李四",23,"上海");
stu3 = new Student("王五",20,"广东");

// 加入list尾部,类似ArrayList的add()操作
students.push_back(stu1);
students.push_back(stu2);
students.push_back(stu3);

//遍历
list<Student*>::iterator i;
for(i=students.begin();i!=students.end();i++){
    
    
    cout << "StudentName:" << (*i)->getName() << ",StudentAge:" << (*i)->getAge() << ",StudentHome:" << (*i)->getHome() << endl;
}

//排序
list<Student*> ascSortByAge(list<Student*> students){
    
    
    list<Student*> newStudents;
    int n = students.size();
    for(int j=0;j<n;j++){
    
    
        int minAge = 99999;
        Student* minStudent;
        list<Student*>::iterator i;
        for(i=students.begin();i!=students.end();i++){
    
    
            if(minAge > (*i)->getAge()){
    
    
                minAge = (*i)->getAge();
                minStudent = *i;
            }
        }
        for(i=students.begin();i!=students.end();i++){
    
    
            if((*i)->getAge() == minAge){
    
    
                students.erase(i);
                break;
            }
        }
        newStudents.push_back(minStudent);
    }
    return newStudents;
}

// 删除指定元素,类似ArrayList的remove
void remove(list<Student*> students,Student* student){
    
    
	list<Student*>::iterator i;
	for(i=students.begin();i!=students.end();i++){
    
    
		if(*i == student){
    
    
			students.erase(i);
			break;
		}
	}
}

附上C++中list的相关操作

assign() 给list赋值 
back() 返回最后一个元素 
begin() 返回指向第一个元素的迭代器 
clear() 删除所有元素 
empty() 如果list是空的则返回true 
end() 返回末尾的迭代器 
erase() 删除一个元素 
front() 返回第一个元素 
get_allocator() 返回list的配置器 
insert() 插入一个元素到list中 
max_size() 返回list能容纳的最大元素数量 
merge() 合并两个list 
pop_back() 删除最后一个元素 
pop_front() 删除第一个元素 
push_back() 在list的末尾添加一个元素 
push_front() 在list的头部添加一个元素 
rbegin() 返回指向第一个元素的逆向迭代器 
remove() 从list删除元素 
remove_if() 按指定条件删除元素 
rend() 指向list末尾的逆向迭代器 
resize() 改变list的大小 
reverse() 把list的元素倒转 
size() 返回list中的元素个数 
sort() 给list排序 
splice() 合并两个list 
swap() 交换两个list 
unique() 删除list中重复的元素

猜你喜欢

转载自blog.csdn.net/qq_37428140/article/details/122265130