是小邹啊

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

STL:C++标准容器库 :vector 

#include <iostream>
#include<string>
#include<vector>
#include<algorithm>

using namespace std;

class Student
{
public:
    Student()
    {
        this->name = " ";
        this->age = 0;
    }

    Student(const string &name,const int &age)
    {
        this->name = name;
        this->age = age;
    }

    void showStu()const
    {
        cout<<this->name<<" "<<this->age<<endl;
    }


private:
    string name;
    int age;
};

void show(const Student &stu)
{
    stu.showStu();
}
int main(int argc, char *argv[])
{
    vector<Student> vec_stu;
    vec_stu.push_back(Student("zhangsan",22));
    vec_stu.push_back(Student("lisi",21));
    vec_stu.push_back(Student("wangwu",28));

    //通过下标遍历
//    for(int i=0;i<vec_stu.size();i++)
//    vec_stu.at(i).showStu();
    //迭代子遍历
//    vector<Student>::iterator it;
//    for(it = vec_stu.begin();it!=vec_stu.end();it++)//it 就是一个Student *
//        it->showStu();  //所以it-> 但是.不出来;
//    for_each(vec_stu.begin(),vec_stu.end(),show);  //需要在外部定义函数
    //通过通用算法遍历
    //插入
//    vector<Student> vec_stu2;
//    vec_stu2.push_back(Student("yankang",22));
//    vec_stu2.push_back(Student("ziwen",21));
//    vec_stu.insert(vec_stu.begin(),vec_stu2.begin(),vec_stu2.end());
//    vec_stu.insert(vec_stu.begin(),2,Student("xiaoli",52));
//    for_each(vec_stu.begin(),vec_stu.end(),show); 
      vector<Student>::iterator ist = vec_stu.begin();  //查找
//      ist = find(vec_stu.begin(),vec_stu.end(),Student("lisi",0));  单值
//         if(ist == vec_stu.end())
//        cout<<"not found!"<<endl;
//      else
//          cout<<"found!"<<endl;

      while((ist=find(ist,vec_stu.end(),Student("lisi",0)))!=vec_stu.end())//多值  需要对==操作符重载
      {
          ist->showStu();
          ist++;
      }
bool operator == (const Student &stu1,const Student &stu2)  ==号操作符重载  同时需要在 类内声明为友元函数
{                                      //定义在类外
    cout<<"bool operator == (const Student &stu1,const Student &stu2)"<<endl;
    if(stu1.name == stu2.name)
        return true;
    return false;
}

 

posted on 2020-04-26 15:38  是小邹啊  阅读(151)  评论(0编辑  收藏  举报