STL迭代器之向量

当使用输入迭代器的时候,也就是直接用迭代器(指针)输入的时候一定要指定容器的大小,否则在运行时出错。可能是不指定大小就不好分配地址,就会出错吧。这都是我自己的一些猜想,很可能是错的,或不严谨。

但是在使用容器的成员函数进行写入、插入时就可以不指定向量容器大小。例如iVect.push_back(520)。

#include<iostream>
#include<vector> //包含STL向量模板头文件
#include<algorithm> //包含STL算法头文件
using namespace std;
//如果不声明命名std空间那么endl就必须写成std::endl;
//向量的定义就是std::vector<int> iVector;这就是命名空间的作用

void Display(int val)
{
cout<<val<<‘\t‘;
}
int main()
{
vector<int> iVect(4); //当不指定向量的大小的,会在运行时出错
vector<int>::iterator it = iVect.begin();
*it++ = 5;
*it++ = 2;
*it++ = 0;
*it = 1314;
for_each(iVect.begin(), iVect.end(), Display); //这是STL算法中的一个函数相当于一个循环语句
return 0;

}

#include<iostream>
#include<vector> //包含STL向量模板头文件
#include<algorithm> //包含STL算法头文件
using namespace std;
//如果不声明命名std空间那么endl就必须写成std::endl;
//向量的定义就是std::vector<int> iVector;这就是命名空间的作用

void Display(int val)
{
cout<<val<<‘\t‘;
}
int main()
{
vector<int> iVect(4); //当不指定向量的大小的,会在运行时出错
iVect[0] = 5;
iVect[1] = 2;
iVect[2] = 0;
iVect[3] = 1314;

for_each(iVect.begin(), iVect.end(), Display); //这是STL算法中的一个函数相当于一个循环语句
return 0;
}

时间: 2024-10-27 09:40:43

STL迭代器之向量的相关文章

(转载)C++迭代器之&#39;插入迭代器

1. 定义 插入型迭代器(Insert Iterator),又叫插入器(Inserter). 2. 作用 插入迭代器的主要功能为把一个赋值操作转换为把相应的值插入容器的操作.算法库对所有在容器上的操作有约束:决不修改容器的大小(不插入.不删除).有了插入迭代器,既使得算法库可以通过迭代器对容器插入新的元素,又不违反这一统带,即保持了设计上的一致性. 3. 类型 3.1 尾部插入器(back_insert_iterator)使用:通过调用容器的push_back()成员函数来插入元素功能:在容器的

初探STL容器之Vector

vector 特点: 1.可变长的动态数组 2.使用时包含头文件 #include <vector> 3.支持随机访问迭代器 ? 根据下标随机访问某个元素时间为常数 ? 在尾部添加速度很快 ? 在中间插入慢 成员函数 初始化 vector(); 初始化成空 vector(int n); 初始化成有n个元素 vector(int n, const T & val); 初始化成有n个元素, 每个元素的值都是val,类型是T vector(iterator first, iterator l

初探STL容器之List

List 特点: 1.实质上是双向链表 2.使用时包含<list>头文件 #include<list> 3.不支持随机访问迭代器,只能使用双向迭代器  //因此不能使用一些算法和运算符操作 4.在任何位置的插入.删除操作都是常数时间 成员函数 初始化 list <int> intlist0; // 创建空的 intlist list <int> intlist1( 3 ); //包含3个元素 list <int> intlist2( 5, 2 )

day_5装饰器、字符串格式化、序列化、内置模块、生成器、迭代器之篇】

一.装饰器 为什么要用装饰器??? 在实际的开发环境中应遵循开发封闭原则,虽然在这个原则是用的面向对象开发,但也适用于函数式编程,简单地说,它规定已经实现的功能代码不是允许修改的,但是可以被扩展: 封闭:已实现的功能代码块 开发:对扩展开发 装饰器功能: 1)自动执行装饰器下面的函数,并将被装饰器函数的函数名当做参数传递给装饰器函数 2)装饰器函数的返回值,重新赋值给被装饰函数 #装饰器格式:@+函数名 #装饰器格式:@+函数名 def outer(func): def inner(arg):

STL容器之map与hash_map

一.简介 就应用来说,map已经是STL标准库的成员,而hash_map暂时还未进入标准库,是扩展ext中的一个功能,但也是非常常用并且非常重要的库. 二.简单对比 首先,要说的是这两种数据结构的都提供了KEY-VALUE的存储和查找的功能.但是实现是不一样的,map是用的红黑树,查询时间复杂度为log(n).而hash_map是用的哈希表,查询时间复杂度理论上可以是常数,但是消耗内存大,是一种以存储换时间的方法. 树查找,在总查找效率上比不上hash表,但是它很稳定,它的算法复杂度不会出现波动

C++STL中的向量vector

#include<iostream>#include<vector>#include<algorithm>using namespace std;typedef vector<int> vt;int main(){ int i; vt v1(10); //定义向量10个元素,注意每个元素初始化为了0 for (i = 0; i < 10; i++)  cout << v1[i] << " "; cout &l

C++ STL vector(向量)

转自博客园:https://www.cnblogs.com/zhonghuasong/p/5975979.html 介绍 vector是表示可变大小数组的序列容器. 就像数组一样,vector也采用的连续存储空间来存储元素.也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效.但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理. 本质讲,vector使用动态分配数组来存储它的元素.当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间.其做法是,分配一个

python 迭代器之chain

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator. 可以直接作用于for循环的对象统称为可迭代对象:Iterable. 直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的generator function. 集合数据类型如list.dict.str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象

C++STL之vector向量容器

vector向量容器 vector向量容器不但能向数组一样对元素进行随机访问, 还能在尾部插入元素 vector具有内存自动管理的功能, 对于元素的插入和删除, 可动态调整所占的内存空间 vector容器的下标是从0开始计数的, 也就是说, 如果vector容器的大小是n, 那么, 元素的下标是0~n-1 对于vector容器的容量定义, 可以事先定义一个固定的大小, 事后, 可以随时调整其大小; 也可以事先不定义, 随时使用push_back()方法从尾部扩张元素, 也可以使用insert()