day 7

封装一个学生的类,定义一个学生这样类的vector容器,里面存放学生对象(至少3个)

再把该容器中的对象,保存到文件中。

再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。

#include <iostream>
#include <vector>
#include <fstream>
#include <cstring>

using namespace std;

//字符串转整型
int stoi(char *buf)
{
    int res = 0;
    for(int i = 0;buf[i] != '\0';i++)
    {
        res = res*10+(buf[i] - '0');
    }
    return  res;

}

//类 : 学生
class Stu
{
private:
    string name;
    int age;
public:
    Stu(){}

    Stu(string name,int age):name(name),age(age){}

    string getname()
    {
        return name;
    }

    int getage()
    {
        return age;
    }
};

int main()
{
    Stu s1("zs",18);
    Stu s2("ls",20);
    Stu s3("ww",24);
    //放入vector中
    vector<Stu> stu;
    stu.push_back(s1);
    stu.push_back(s2);
    stu.push_back(s3);

    //以写的方式打开文件
    ofstream ofs;
    ofs.open("C:/Users/Administartor/Desktop/1.txt",ios::out);

    //写入文件
    vector<Stu>::iterator iter;
    for(iter = stu.begin();iter != stu.end();iter++)
    {
        ofs << "name : " << iter->getname() << " age : " << iter->getage() << endl;
    }

    //关闭文件
    ofs.close();

    //以读的方式打开文件
    ifstream ifs;
    ifs.open("C:/Users/Administartor/Desktop/1.txt",ios::in);

    char buf[128];
    int i = 0;
    string na;
    int ag;

    //读文件内容输入到另一个容器中
    //创建新容器
    vector<Stu> ostu;

    //读取数据
    while(1)
    {
        i++;
        memset(buf,0,sizeof (buf));
        if(ifs >> buf)
        {
            //cout << buf ;
            if((i%3 == 0 )&&(i%6 != 0))
            {
                na = buf;
            }
            if(i%6 == 0)
            {
                ag = stoi(buf);
                Stu s4(na,ag);
                ostu.push_back(s4);
            }
        }
        else
            break;
    }

    //关闭文件
    ifs.close();

    //从新的vector中读取数据
    for(iter = ostu.begin();iter != ostu.end();iter++)
    {
        cout << "name : " << iter->getname() << " age : " << iter->getage() << endl;
    }

    return 0;
}

1.把list的相关函数都实现出来。

#include <iostream>
#include <list>

using namespace std;

void show(list<int> &lst)
{
    list<int>::iterator iter;
    for(iter = lst.begin();iter != lst.end();iter++)
    {
        cout << *iter << " ";
    }
    cout << endl;
}

int main()
{
    //构造
    list<int> lst;
    lst.push_back(11);
    lst.push_front(22);
    show(lst);
    list<int> lst1(lst.begin(),lst.end());
    show(lst1);
    list<int> lst2(3,77);
    show(lst2);
    list<int> lst3(lst2);
    show(lst3);
    //赋值和交换
    list<int> lst4;
    lst4.assign(lst.begin(),lst.end());
    show(lst4);
    lst4.assign(4,44);
    show(lst4);
    lst4 = lst;
    show(lst4);
    lst4.swap(lst2);
    show(lst2);
    show(lst4);
    //大小计算
    if(lst2.empty());
    else
    {
        cout << "lst_size : " << lst2.size() <<endl;
        lst2.resize(3);
        show(lst2);
        cout << "lst_size : " << lst2.size() <<endl;
        lst2.resize(5,99);
        show(lst2);
        cout << "lst_size : " << lst2.size() <<endl;
    }
    cout<< "---------------------" <<endl;
    //插入删除
    list<int> lst5;
    lst5.push_back(11);
    lst5.push_back(22);
    show(lst5);
    lst5.push_front(33);
    show(lst5);
    lst5.pop_back();
    show(lst5);
    lst5.pop_front();
    show(lst5);
    list<int>::iterator pos;
    pos = lst5.begin();
    lst5.insert(pos,44);
    show(lst5);
    lst5.insert(pos,3,7);
    show(lst5);
    lst5.insert(pos,lst.begin(),lst.end());
    show(lst5);
    lst5.erase(pos);
    show(lst5);
    lst5.remove(11);
    show(lst5);
    lst5.erase(pos,lst5.end());
    show(lst5);
    lst5.clear();
    show(lst5);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值