本文目录
- vs中初始化vector
- vector对象 如何初始化
- vector 对象作为函数参数时的初始化
- c++中vector容器这么初始化很多元素
- 可以用vector初始化stack吗
- C++ vector
> 如何初始化 - vector初始化可以用中括号吗
- 静态结构体中vector初始化
vs中初始化vector
vector ivec={"a","an"}; VS VC不支持这种初始化!以下方法可借鉴 vector text(10);//初始化大小为10,每个值均为0 vector text(10,1);//初始化大小为10,每个值均为1 intarray={...}; vector text(array,array+10);//用array对vector进行初始化 如果是动态初始化,就用push_back(),例如: ifstream infile("1.txt"); vector vec; string str; while(infile》》str) vec.pushback(str);
vector对象 如何初始化
老老实实用push_back吧由于a中的10个值都不相同(派出了用for的可能)既然选择使用STL,就不要像楼上的朋友用数组了(虽然可以实现),因为几乎没有人那样使用vector,你就当练字吧最然是个很简单的问题,但是没必要偷懒,用push_back最好啦如果你的问题是输入zero到onemillion,那么问题就可以得到简化了使用for循环,然后找规律!!额外地,你的标题有问题,vector是一个模板类(模板类不是类)vector《string》则是类,他定义的对象a,在定义时就调用了默认构造函数。后面的都是对对象的操作(楼上的则用了另一个构造函数)
vector 对象作为函数参数时的初始化
vector不能用true来代替,vector初始化就是调用构造函数,最简单的是调用空构造函数,比如:vector《char*》v;这样就创建了一个vector对象v,然后就可以把它当参数传过去了
c++中vector容器这么初始化很多元素
对于vector容器来说,声明变量后讲调用构造函数,假如你已经开始学习面向对象编程了,你将容易理解。vector《int》 x(5);调用一个参数的构造函数,构造出具有5个int型值得对象,默认值为0(5,5);调用2个参数的构造函数,初始化为5个相同的元素,其值为5。而(5,5,5);没有对应的构造函数,将调用错误。
可以用vector初始化stack吗
可以的。C++STL中vector的六种初始化方式:(1)vector《int》 ilist1;默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。(2)vector《int》 ilist2(ilist1);或 vector《int》 ilist2 = ilist1;两种方式等价 ,ilist2 初始化为ilist 的拷贝,ilist必须与ilist2 类型相同,也就是同为int的vector类型,ilist2将具有和ilist相同的容量和元素(3)vector《int》 ilist = {1,2,3.0,4,5,6,7};vector《int》 ilist {1,2,3.0,4,5,6,7};ilist 初始化为列表中元素的拷贝,列表中元素必须与ilist的元素类型相容,本例中必须是与整数类型相容的类型,整型会直接拷贝,其他类型会进行类型转换。(4)vector《int》 ilist3(ilist.begin()+2,ilist.end()-1);ilist3初始化为两个迭代器指定范围中元素的拷贝,范围中的元素类型必须与ilist3 的元素类型相容,在本例中ilist3被初始化为{3,4,5,6}。注意:由于只要求范围中的元素类型与待初始化的容器的元素类型相容,因此迭代器来自不同的容器是可能的,例如用一个double的list的范围来初始化ilist3是可行的。另外由于构造函数只是读取范围中的元素进行拷贝,因此使用普通迭代器还是const迭代器来指出范围并没有区别。这种初始化方法特别适合于获取一个序列的子序列。(5)vector《int》 ilist4(7);默认值初始化,ilist4中将包含7个元素,每个元素进行缺省的值初始化,对于int,也就是被赋值为0,因此ilist4被初始化为包含7个0。当程序运行初期元素大致数量可预知,而元素的值需要动态获取的时候,可采用这种初始化方式。(6)vector《int》 ilist5(7,3);指定值初始化,ilist5被初始化为包含7个值为3的int。
C++ vector> 如何初始化
vector 是个模板 在调用的时候,必须按照模板的格式写:vector《int》 arr (初始个数,赋值);vector《int》 arr(5,0);扩张时resize即可。
vector初始化可以用中括号吗
vector初始化不可以使用中括号。vector初始化不是使用的中括号,是使用的花括号。使用花括号是,想用列表初始化vector对象的,初始化过程会尽可能的把花括号内的值当做是元素的初始值的列表来处理。
静态结构体中vector初始化
static struct { vector《double》 a; vector《CvMat*》 b;}A;
因 vector有默认构造,不需要特别初始化语句,A.a和A.b都会自动初始化。
如果你需要为A.a和A.b使用非默认的构造,则需要使用到初始化列表。如下:
struct SA{ vector《double》 a; vector《CvMat*》 b; _A(int size_a, int size_b): a(size_a), b(size_b) {}};static SA A(1, 2);