C++ 容器vector的范例学习

下面是一个容器的基本使用范例,在此之前,先来看看vector。vector是namespace std内的template。其定义如下:

namespace std
{
    template <class T, class Allocator = allocator<T> > class vector;
}

来看看实际例子中是如何使用的:

在文件vectorpra.h中:

class People{
protected:
    string Sex;
    string name;
    int age;
};
class Student: public People {
private:
    int grade;
public:
    void SetSex(string wsex){
        Sex=wsex;
    }
    string GetSex() const{
        return Sex;
    }
    void SetName(string stuname){
        name=stuname;
    }
    string GetName() const{
        return name;
    }
    void SetAge(int year){
        age=year;
    }
    int GetAge() const{
        return age;
    }
    void SetGrade(int gradeyear){
        grade=gradeyear;
    }
    int GetGrade() const{
        return grade;
    }
};
typedef vector<Student> StudentArray;
class stuManager {
public:
    StudentArray m_array;
    void CreateStuInfo(string Aname,string Asex,int Aage, int Agrade);
    void PrintStuInfo(Student stu);
};

在文件vector.cpp中:

void stuManager::CreateStuInfo(string Aname,string Asex,int Aage, int Agrade)
{
    Student STU;
    STU.SetName(Aname);
    STU.SetSex(Asex);
    STU.SetAge(Aage);
    STU.SetGrade(Agrade);
    stuManager::m_array.push_back(STU);
}
void stuManager::PrintStuInfo(Student stu)
{
    cout<<"Name ="<<stu.GetName()<<endl;
    cout<<"Sex  ="<<stu.GetSex()<<endl;
    cout<<"Age  ="<<stu.GetAge()<<endl;
    cout<<"Grade="<<stu.GetGrade()<<endl;
}

在main.cpp中:

int main(void)
{
    stuManager MyClass;
    MyClass.m_array.reserve(10); //保留10个元素的存储空间
    MyClass.CreateStuInfo("Kaier","Male",14 ,3);
    MyClass.CreateStuInfo("Randy","FMale",13 ,3);
    MyClass.CreateStuInfo("Parker","Male",15 ,3);
    MyClass.CreateStuInfo("Coco","FMale",13 ,3);
    MyClass.CreateStuInfo("Joe","Male",12 ,3);
    MyClass.CreateStuInfo("Amy","FMale",15 ,3);
    for (int i = 0; i < MyClass.m_array.size();i++)
    {
        MyClass.PrintStuInfo(MyClass.m_array.at(i));
    }
    getchar();
    getchar();
    return 0;
}
时间: 2024-10-31 03:47:09

C++ 容器vector的范例学习的相关文章

C/C++中容器vector使用方法&lt;第二弹&gt;

此文总结常用vector操作,是前一篇的续作!只有代码,详细请看代码中的注释.出于反爬虫的目的,你不是在http://blog.csdn.net/zhanh1218上看到的,肯定不是最新最全的. /********************************************************************* * file_name: vector_test.cpp * * Created on: 2014年6月28日 下午3:34:23 * Author: The_T

C/C++中容器vector使用方法

C++中数组很坑,有没有类似Python中list的数据类型呢?类似的就是vector!vector 是同一种类型的对象的集合,每个对象都有一个对应的整数索引值.和 string 对象一样,标准库将负责管理与存储元素相关的内存.我们把 vector 称为容器,是因为它可以包含其他对象.一个容器中的所有对象都必须是同一种类型的. vector对象的定义和初始化 同样的,使用前,导入头文件#include <vector> 可以使用using声明:using std::vector; vector

STL标准库-容器-vector

摘要: 技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性. 我对向量容器vector的理解就是一个动态数组,内存连续,它是动态分配内存,且每次扩张的原来的二倍. 他的结构如下 一 定义 vector< 类型 > 标识符(最大容量,初始所有值) vector是一种类模板,那么他有很多行为与类相似 头文件 #include <vector> //a.定义 vector<typeName> v; vector<int> v; //b.拷贝构造

C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用

序列性容器::(vector和list和deque) erase迭代器不仅使所有指向被删元素的迭代器失效,而且使被 删元素之后的所有迭代器失效,所以不能使用erase(iter++)的方 式,但是erase的返回值为下一个有效的迭代器,所以   正确方法为:: for( iter = c.begin(); iter != c.end(); ) iter = c.erase(iter); 关联性容器::(map和set比较常用) erase迭代器只是被删元素的迭代器失效,但是返回值为void, 所

C++线性序列容器&lt;vector&gt;简单总结

C++线性序列容器<vector>简单总结 vector是一个长度可变的数组,使用的时候无须声明上限,随着元素的增加,Vector的长度会自动增加:Vector类提供额外的方法来增加.删除元素,比数组操作高效. 头文件:#include <vector> 命名空间:using namespace std:vector 构造函数 vector<int>vec_int;         // 创建一个整形元素的vector vector<string>vec_s

STL容器 vector,list,deque 性能比较

C++的STL模板库中提供了3种容器类:vector,list,deque对于这三种容器,在觉得好用的同时,经常会让我们困惑应该选择哪一种来实现我们的逻辑.在少量数据操作的程序中随便哪一种用起来感觉差别并不是很大,但是当数据达到一定数量后,会明显感觉性能上有很大差异. 本文就试图从介绍,以及性能比较两个方面来讨论这个问题. vector - 会自动增长的数组 list - 擅长插入删除的链表 deque - 拥有vector和list两者优点的双端队列 性能竞技场 性能总结与使用建议 测试程序清

C++ 顺序容器(vector,list、deque,stack,queue)

顺序容器的种类有:vector,list.deque 顺序容器适配器: stack     //先进后出   栈 queue   //先进先出   队列 priority_queue   //也优先管理级的优先队列 1.头文件 #include <vector> #include <list> #include <deque> //每一种头文件对应一种顺序容器 #include <queue> //队列 优先队列的头文件 #include <stack

SGI-STL简记(六)-序列容器(vector)

stl_vector.h : vector:可随机访问元素的序列容器,从后插入或删除在常量时间内完成,从首部或中间则需线性时间内完成: _Vector_alloc_base:vector分配基类模板:模板参数分别为数据类型T,分配器类型_Allocator,以及一个bool标识_IsStatic(用于区分是否为标准分配器或SGI分配器); 数据成员: _M_data_allocator:分配器对象; _M_start:保存申请的缓冲区首地址(等同于容器元素的首地址): _M_finish:保存容

容器vector

//容器vector,可以单方向扩展 //扩展的速度是以二倍的速度扩展 #include <iostream> #include <vector> using namespace std; int main() { vector<int> v;//定义一个空vector vector<int> v1(4);//定义一个大小为4的vector,初始值为0 vector<int> v2(4,6);//定义一个大小为4的vector,初始值为6 vec