【C++】Vector类学习

1.关于本文

文中描述的是一个学习Vector类过程中写的程序,程序中进行了以下步骤

1)建立vector<Person*>

2)调用push_back函数,在最后添加元素

3)迭代遍历vector

4)使用迭代器遍历vector

5)调用max_size函数查询vector的最大容量

6)找出vector中的首个元素和最后一个元素

7)调用insert函数插入数据

8)调用erase函数删除数据

9)调用pop_back函数删除最后一个数据

10)调用swap函数交换数据

11)调用clear函数删除全部数据

12)调用empty函数判断vector内是否还有数据

2.程序代码

#include <iostream>
#include <vector>

using namespace std;

class Person
{

public:

    string Name;
    int Age;
    bool Sex_is_male;

    // Constructor
    Person(string n, int a, bool sim)
    {
        this -> Name = n;
        this -> Age = a;
        this -> Sex_is_male = sim;
    }    
};

int main()
{
    cout << "Program Activate." << endl << endl;

    vector<Person*> vecPersons;

    // Add Persons (push_back)
    cout << "Add Persons" << endl;
    vecPersons.push_back(new Person("Tsybius", 23, true));
    vecPersons.push_back(new Person("Galatea", 21, false));
    vecPersons.push_back(new Person("Ilithyia", 22, false));
    cout << endl;

    // Traverse Vector [1]
    cout << "Traverse Vector [1]" << endl;
    for(int i = 0; i < vecPersons.size(); i++)
    {
        cout << "Person: " << vecPersons[i] -> Name << endl;
    }
    cout << endl;

    // Traverse Vector [2]
    cout << "Traverse Vector [2]" << endl;
    vector<Person*> :: iterator iter;
    for(iter = vecPersons.begin(); iter != vecPersons.end(); iter++)
    {
        cout << "Person: " << (*iter) -> Name << endl;
    }
    cout << endl;

    // Max Size
    cout << "Max_Size: " << vecPersons.max_size() << endl;
    cout << "First Data: " << (*vecPersons.begin()) -> Name << endl;
    cout << "Last Data: " << (vecPersons[vecPersons.size() - 1]) -> Name << endl;
    cout << endl;

    // Add Person (insert)
    cout << "Add Person Furius" << endl;
    vecPersons.insert(vecPersons.begin() + 2, new Person("Furius", 18, true));
    cout << endl;

    // Traverse Vector
    cout << "Traverse Vector" << endl;
    for(int i = 0; i < vecPersons.size(); i++)
    {
        cout << "Person: " << vecPersons[i] -> Name << endl;
    }
    cout << endl;

    // Delete Person (erase)
    cout << "Delete Person Furius" << endl;
    vecPersons.erase(vecPersons.begin() + 2);
    cout << endl;

    // Traverse Vector
    cout << "Traverse Vector" << endl;
    for(int i = 0; i < vecPersons.size(); i++)
    {
        cout << "Person: " << vecPersons[i] -> Name << endl;
    }
    cout << endl;

    //Delete Person (pop_back)
    cout << "Delete the Last Person" << endl;
    vecPersons.pop_back();
    cout << endl;

    // Traverse Vector
    cout << "Traverse Vector" << endl;
    for(int i = 0; i < vecPersons.size(); i++)
    {
        cout << "Person: " << vecPersons[i] -> Name << endl;
    }
    cout << endl;

    // Swap Tsybius and Galatea
    cout << "Swap Tsybius and Galatea" << endl;
    swap(vecPersons[0], vecPersons[1]);
    cout << endl;

    // Traverse Vector
    cout << "Traverse Vector" << endl;
    for(int i = 0; i < vecPersons.size(); i++)
    {
        cout << "Person: " << vecPersons[i] -> Name << endl;
    }
    cout << endl;

    // Clear All Persons
    cout << "Clear All Persons" << endl;
    vecPersons.clear();
    
    // IsEmpty?
    cout << "Vector vecPersons is now "    << (vecPersons.empty() ? "empty" : "nonempty");
    cout << endl << endl;

    cout << "Program Closed!" << endl;

    return 0;
}

3.makefile文件

a: a.o
    g++ -o a a.o
a.o: a.cpp
    g++ -c a.cpp
clean:
    rm -rf *.o a

4.运行结果

【C++】Vector类学习

【C++】Vector类学习

END

你可能感兴趣的:(【C++】Vector类学习)