vector构造函数的使用

一、介绍

vector容器提供了很多个构造函数,有的构造函数同时也提供了初始化或赋值功能,这很大程度上方便了我们构造vector对象,下面是我们常用的5种构造函数。

1.vector();
说明:无参构造函数,构造一个vector对象,但未进行初始化,此时元素个数为0。

2.vector( size_type num );
说明:size_type 是size_int的别名,属于unsigned int,即无符号整形。该构造函数将创建一个能容纳num个元素的vector对象,如果vector的型别是int,则这些元素都初始化为0;如果是char,则为‘\0’;如果是string,则是“”空字符串。

3.vector( size_type num, const TYPE &val );
说明:构造一个能容纳num个元素的vector对象,并且初始值都设置为val。

4.vector( const vector &from );
说明:创建一个vector对象,并且把from的值赋值给新创建的对象。

5.vector( input_iterator start, input_iterator end );
说明:创建一个vector对象,并且input_iterator对象从start位置到end位置的数值付给新创建的对象。


二、代码

下面对以上的构造函数进行一个简单使用测试:


//构造函数
void test_construct(void)
{
    vector<int> v1, v2(5), v3(5, 10), v4(v2), v5(v3.begin(), v3.end() - 2);
    cout << "v1:" << endl;
    cout << "v1.size():" << v1.size() << endl;
    copy(v1.begin(), v1.end(), ostream_iterator<int, char>(cout, " "));
    cout << endl << "v2:" << endl;
    copy(v2.begin(), v2.end(), ostream_iterator<int, char>(cout, " "));
    cout << endl << "v3:" << endl;
    copy(v3.begin(), v3.end(), ostream_iterator<int, char>(cout, " "));
    cout << endl << "v4:" << endl;
    copy(v4.begin(), v4.end(), ostream_iterator<int, char>(cout, " "));
    cout << endl << "v5:" << endl;
    copy(v5.begin(), v5.end(), ostream_iterator<int, char>(cout, " "));
    cout << endl;

    vector<char> v6(5);
    cout << endl << "v6:" << endl;
    copy(v6.begin(), v6.end(), ostream_iterator<char, char>(cout, " "));
    cout << endl;
    cout << "v6.size():" << v6.size() << endl;
    for(vector<char>::iterator ite = v6.begin(); ite != v6.end(); ite++)
    {
        if(*ite == '\0')
        {
            cout << "v6的元素为'\0'!" << endl;
        }
    }

    vector<string> v7(5);
    cout << endl << "v7:" << endl;
    //string 类型的 类型的型别vector 容器 容器不支持copy 输出
    //copy(v7.begin(), v7.end(), ostream_iterator(cout, " "));
    cout << endl;
    cout << "v6.size():" << v7.size() << endl;
    for(vector<string>::iterator ite = v7.begin(); ite != v7.end(); ite++)
    {
        if(*ite == "")
        {
            cout << "v7的元素为\"\"!" << endl;
        }
    }
}

三、结果及分析

1.结果如下:

vector构造函数的使用_第1张图片

2.分析

从v1到v5的输出结果来看,很好理解以上的5个构造函数的用法。v1到v5的vector的元素型别是int,那么如果是char和string,vector容器如何初始化呢?从v6和v7的测试结果来看,可以知道,char型别的vector容器中的元素的初始值被设置为’\0’,string型别的vector容器中的元素的初始值被设置为空字符串。

以上就是常用的5个构造函数的简单用法,如果有错误的地方,欢迎指正!

你可能感兴趣的:(C++,STL,vector,STL,C++,vector)