vector对象的定义和初始化
来源:互联网 发布:js设置html标签隐藏 编辑:程序博客网 时间:2024/05/16 09:32
vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
为了可以使用vector,必须在你的头文件中包含下面的代码:#include
一、vector对象的定义和初始化
几种初始化vector对象的方式
1. 创建确定个数的元素
若要创建非空的vector对象,必须给出初始化元素的值。当把一个vector对象复制到另一个vector对象时,新复制的vector中每一个元素都初始化为原vector中相应元素的副本。但这两个vector对象必须保存同一种元素类型:
vector ivec1; // ivec1 holds objects of type intvector ivec2(ivec1); // ok: copy elements of ivec1 into ivec2vector svec(ivec1); // error: svec holds strings, not ints
可以用元素个数和元素值对vector对象进行初始化。构造函数用元素个数来决定vector对象保存元素的个数,元素值指定每个元素的初始值:
vector ivec4(10, -1); // 10 elements, each initialized to -1
vector svec(10, "hi!"); // 10 strings, each initialized to "hi!"
更有效的方法是先初始化一个空vector对象,然后再动态地增加元素。
2. 值初始化
如果vector保存内置类型(如int类型)的元素,那么标准库将用0值创建元素初始化值:
vector fvec(10); // 10 elements, each initialized to 0
如果向量保存类类型(如string)的元素,标准库将用该类型的默认构造函数创建元素初始值:
vector svec(10); // 10 elements, each an empty string
3、成员函数 如:vector<T>c;
1)c.assign(beg,end) // 将[beg; end)区间中的数据赋值给c ???这句是不是有问题,
c.assign(n,elem) // 将n个elem的拷贝赋值给c。
c.assign(3,2); //将3个int,值 都是2的元素赋值给C
2) c.at(idx) // 传回索引idx所指的数据,如果idx越界,抛出out_of_range。
3) c.back() // 传回最后一个数据,不检查这个数据是否存在。
4) c.begin() // 传回迭代器中的第一个数据地址。
5) c.capacity() // 返回容器中数据个数。
6)c.clear() // 移除容器中所有数据。
7)c.empty() // 判断容器是否为空。
8)c.end() // 指向迭代器中末端元素的下一个,指向一个不存在元素。
9)c.erase(pos) // 删除pos位置的数据,传回下一个数据的位置。
10)c.erase(beg,end) //删除[beg,end)区间的数据,传回下一个数据的位置。
11)c.front() // 传回第一个数据。
12)get_allocator // 使用构造函数返回一个拷贝。
13)c.insert(pos,elem) // 在pos位置插入一个elem拷贝,传回新数据位置。
14)c.insert(pos,n,elem) // 在pos位置插入n个elem数据。无返回值。
15)c.insert(pos,beg,end) // 在pos位置插入在[beg,end)区间的数据。无返回值。
16)c.max_size() // 返回容器中最大数据的数量。
17)c.pop_back() // 删除最后一个数据。
18)c.push_back(elem) // 在尾部加入一个数据。
19)c.rbegin() // 传回一个逆向队列的第一个数据。
20)c.rend() //函数返回指向当前vector起始位置的逆迭代器.
21)c.resize(num,val) // 重新指定队列的长度,且对新创建的元素赋值val。
22)c.reserve() // 保留适当的容量。
23)c.size() // 返回容器中实际数据的个数。
24)c1.swap(c2)
25)swap(c1,c2) // 将c1和c2元素互换。同上操作。
26)operator[] // 返回容器中指定位置的一个引用。
- // testtest.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <stdio.h>
- #include <iostream>
- #include <vector>
- #include "hongdingyi.h"
- using namespace std;
- void test_vector_insert( )
- {
- vector <int> v1;
- vector <int>::iterator Iter;
- v1.push_back( 10 );
- v1.push_back( 20 );
- v1.push_back( 30 );
- cout << "v1 =" ;
- for ( Iter = v1.begin( );Iter != v1.end( ) ; Iter++ )
- {
- cout << " " << *Iter;
- }
- cout << endl;
- v1.insert( v1.begin( ) + 1, 40 );
- cout << "v1 =";
- for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
- {
- cout << " " << *Iter;
- }
- cout << endl;
- v1.insert( v1.begin( ) + 2, 4, 50 );
- cout << "v1 =";
- for ( Iter = v1.begin( ) ; Iter != v1.end( ) ; Iter++ )
- {
- cout << " " << *Iter;
- }
- cout << endl;
- v1.insert( v1.begin( )+1, v1.begin( )+2, v1.begin( )+4 );// 在 v1.begin( )+1 位置插入在[v1.begin( )+2,v1.begin( )+4)区间的数据。无返回值
- cout << "v1 =";
- for (Iter = v1.begin( ); Iter != v1.end( ); Iter++ )
- {
- cout << " " << *Iter;
- }
- cout << endl;
- //用下面这种形式也可以的
- vector<char> alphaVector;
- for (int i=0;i<5;i++)
- {
- alphaVector.push_back(i+65);
- }
- vector<char>::iterator theIterator = alphaVector.begin();
- alphaVector.insert(theIterator,4,'C');
- alphaVector.insert(alphaVector.begin()+2,'1');
- for (theIterator=alphaVector.begin();theIterator!=alphaVector.end();theIterator++)
- {
- cout<<*theIterator<<" ";
- }
- cout<<endl;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- vector<int> ::iterator it;
- vector<int> vec(5,3);
- for (it=vec.begin();it!=vec.end();it++)
- {
- cout<<*it<<" ";//3 3 3 3 3
- }
- cout<<endl;
- vec.assign(3,2);// 将3个int,值都是2的像素赋值给vec,这里vec以前的像素都被覆盖
- for (it=vec.begin();it!=vec.end();it++)
- {
- cout<<*it<<" ";//结果:2 2 2
- }
- cout<<endl;
- vector<int> v1;
- for (int i=1;i<=3;i++)
- {
- v1.push_back(i);
- }
- v1.resize(6,8);//第一个参数是容器新的大小,第二个参数是要加入容器中的新元素,即容器大小为6,多出的两个空间都初始化为8
- for (it=v1.begin();it!=v1.end();it++)
- {
- cout<<*it<<" ";//结果:1 2 3 8 8 8
- }
- cout<<endl;
- //下面的for 与上面的for循环功能是一样的,都是显示容器V1中的元素。
- for(int i=0;i<v1.size();i++)//resize与reserver并不会删除原先的元素以释放空间
- {
- cout<<v1[i]<<" ";//结果:1 2 3 8 8 8
- }
- cout<<endl;
- cout <<"v1.size:"<<v1.size()<<endl;//结果:6
- v1.reserve(8);//保证vector的空间大小(capacity)最少达到它的参数所指定的大小
- cout <<"v1.capacity:"<<v1.capacity()<<endl;//结果:8
- vector<int>::reverse_iterator pos;
- pos = v1.rend();
- pos--;
- cout<<*pos<<" ";
- pos--;
- cout<<*pos<<endl; //上面两个cout 输出 1 2
- pos=v1.rbegin();
- pos++;
- cout<<*pos<<endl;//结果:8
- test_vector_insert();//几个insert函数的用法
- system("pause");
- return 0;
- }
- vector对象的定义和初始化
- vector 对象的定义和初始化
- vector对象的定义和初始化
- vector对象的定义和初始化
- 定义和初始化vector对象
- vector对象的定义和初始化以及vector迭代器iterator
- vector对象的定义和初始化 动态增长
- 3.3.1. vector 对象的定义和初始化
- vector的定义和初始化
- vector 对象的初始化和操作
- vector对象的初始化
- 静态vector容器成员变量的定义和初始化
- 标准库string对象的定义和初始化
- 标准库string对象的定义和初始化
- 第一章 C++编程基础(对象的定义和初始化)
- vector的初始化和遍历
- vector的初始化和遍历
- vector的初始化和遍历
- 字符串分段
- MongoDB下载安装
- _configureCellForDisplay:forIndexPath:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/U
- koji build fail with "certificate verify failed"
- 不良资产催收 具体问题具体分析
- vector对象的定义和初始化
- iOS中 最新收集的代码块(汇总) 韩俊强的博客
- Hdu :: Moving Tables 贪心
- meanfile
- sublime text2 自动生成头部注释
- Biker's Trip Odometer(水题)
- Android 中的CreatePackageContext()
- Text Kit入门——Beginning Text Kit
- java中解决double计算精度不准确问题