【STL】vector及其初始化

标签: c++ STL vector
3人阅读 评论(0) 收藏 举报

vector

vector是一个强大的STL容器,速度可以与数组匹敌(有时候甚至会比数组快),普通的push_back(), erase(), front(), back(), begin()等函数这里不予介绍,主要讲如何初始化。

在定义的时候初始化

由于作者有不写using namespace std的习惯,所以读者会遇到一大堆std::vector之类的玩意儿。。

首先是一维的初始化

std::vector< int > v(n);
std::vector< int > v(n, -1);

这两个参数的意义应该是很明显的,第一个参数是开多大的空间,注意范围是0~n的,所以要像数组一样为了保险多开几位。第二个参数表示每个元素的值是多少。

然后是二维的初始化

std::vector< std::vector< int > > v(n, std::vector< int >(n));
std::vector< std::vector< int > > v(n, std::vector< int >(n, -1));

第二个参数发生了改变,意思也很简单,就是每个vector里面都是一个vector,所以嵌套定义一下就可以了。

最后是更高维的初始化

你以为我会全部列出来吗。。。像二维一样嵌套定义就可以了。

在定义后重新初始化

有时候我们已经定义过一个vector,但是在程序中又要对vector重新初始化一遍,这时候就不能这么简单了,当然还是循环大法。。。
不过既然vector这么牛逼,它还是给了我们偷懒的余地的~
接下来就是讲解传说中的resize()和assign(),resize()大家应该很熟悉,只是resize()用了之后原来的数据仍会保留,所以需要先clear()之后再resize()。至于assign(),这就是vector的memset。

std::vector< int > v(n, -1);
//先定义好
v.clear();
v.resize(m);
v.assign(m, 0x3f3f3f3f);

上面就是完成了一个将包含n个全是-1的vector改为包含m个全是0x3f3f3f3f的vector,从上面就可以知道assign()怎么用了,就是给v分配m个0x3f3f3f3f(从头开始),这下重新初始化vector就很方便了。

高维的是同理,只是要for循环一下就可以了。

std::vector< std::vector< int > > v(n, std::vector< int >(n, -1));
for (unsigned int i = 0; i < n; i++) {
    v[i].clear();
    v[i].resize(m);
    v[i].assign(m, 1);
}

应该差不多吧。

查看评论

STL模板编程

-
  • 1970年01月01日 08:00

STL的vector<string>的三种简单初始化方式

(1)第一种,类似于数组的方式: [cpp] view plaincopyprint? std::vector strArray(10);   s...
  • Tom_and_Jerry_zhao
  • Tom_and_Jerry_zhao
  • 2015-10-20 16:46:06
  • 2852

stl 静态数组初始化vector及pair,vector混合使用

#include "iostream" #include "vector" using namespace std; //静态数组初始化vector, pair和vector混合...
  • alex_xhl
  • alex_xhl
  • 2015-08-12 15:57:57
  • 1777

STL学习笔记-vector容器(动态数组)

简介: vector是将元素置于一个动态数组中进行管理的容器 vector可以随机存取元素,支持索引值直接存取,用[]或者at()方法 vector下尾部添加或者删除元素非常快,但在中间或头部插...
  • tangwei2014
  • tangwei2014
  • 2015-10-21 22:32:40
  • 2577

STL vectorz中的 resize方法(16)

public member function std::vector::resize C++98 C++11 void resize (size_type ...
  • guang_jing
  • guang_jing
  • 2014-08-13 17:18:59
  • 1660

STL之vector创建初始化二维数组

方法1:nt N=5, M=6; vector Matrix(N); for(int i =0; i< Matrix.size(); i++){ Matrix[i].resize(M); ...
  • huheqing
  • huheqing
  • 2017-03-10 11:10:53
  • 200

STL的vector<string>的初始化方式总结

(1)第一种,类似于数组的方式: std::vector strArray(10); strArray[0] = "hello"; strArray[1] = "world"; strArray[2...
  • acs713
  • acs713
  • 2015-04-08 13:51:20
  • 15647

STL----vector的内存分配与释放

原文:http://www.cnblogs.com/biyeymyhjob/archive/2012/09/12/2674004.html 案例: #include #include #inclu...
  • litoujkl
  • litoujkl
  • 2015-08-06 14:11:41
  • 1274

STL容器中的vector初始化问题

http://imatlab.lofter.com/post/286ffc_a81276 对STL容器中vecto初始化一直存在一些疑问,看了这篇博文后懂了很多,所以写一写自己的理解。 一·数组...
  • wodemaoheise
  • wodemaoheise
  • 2017-09-05 16:45:16
  • 95

C++ STL vector(向量容器)的使用(附完整程序代码)

一、简介 Vectors 包含着一系列连续存储的元素,其行为和数组类似。 访问Vector中的任意元素或从末尾添加元素都可以在O(1)内完成,而查找特定值的元素所处的位置或是在Vector中插...
  • ACM_10000h
  • ACM_10000h
  • 2015-08-23 16:49:51
  • 1702
    个人资料
    持之以恒
    等级:
    访问量: 367
    积分: 270
    排名: 29万+
    文章分类
    文章存档