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.结果如下:
2.分析
从v1到v5的输出结果来看,很好理解以上的5个构造函数的用法。v1到v5的vector的元素型别是int,那么如果是char和string,vector容器如何初始化呢?从v6和v7的测试结果来看,可以知道,char型别的vector容器中的元素的初始值被设置为’\0’,string型别的vector容器中的元素的初始值被设置为空字符串。
以上就是常用的5个构造函数的简单用法,如果有错误的地方,欢迎指正!