/*
* vectorDemo.cpp
*
* Created on: Jul 17, 2014
* Author: lichfeng
*/
#include<vector>
#include <iostream.h>
#include <algorithm>
#include"vectorDemo.H" using namespace std; void vectorDemo() {
/**************************************************************************/
/* constructors functions */
/**************************************************************************/
vector<int> first; // empty vector of ints
vector<int> second(4, 100); // four ints with value 100
vector<int> third(second.begin(), second.end()); // iterating through second
vector<int> fourth(third); // a copy of third
// the iterator constructor can also be used to construct from arrays:
int myints[] = { 16, 2, 77, 29, 8, 3, 24 };
vector<int> fifth(myints, myints + sizeof(myints) / sizeof(int)); cout << "The contents of fifth are:";
for (vector<int>::iterator it = fifth.begin(); it != fifth.end(); ++it)
cout << ' ' << *it;
cout << '\n'; /**************************************************************************/
/* iterator erase (iterator position); */
/* iterator erase (iterator first, iterator last); */
/* erase(): 在vector中移除一个元素(通过position),或者移除一个区间([first, last))内的元素*/
/* 该函数返回值是所删除的元素的下一个元素。 */
/* Note: 由于vector是以数组形式组织的,所以删除中间元素将导致vector中其他元素向前移动。这对vector */
/* 而言是低效的操作,应减少使用。但此操作对list和deque等链表组织的容器很高效. */
/**************************************************************************/
//vector<int>::iterator ii;
fifth.erase(fifth.begin() + 1);
cout << "After erase by position, the contents of fifth are:";
for (vector<int>::iterator it = fifth.begin(); it != fifth.end(); ++it)
cout << ' ' << *it;
cout << '\n'; fifth.erase(fifth.begin(), fifth.begin() + 2);
cout << "After erase by range, the contents of fifth are:";
for (vector<int>::iterator it = fifth.begin(); it != fifth.end(); ++it)
cout << ' ' << *it;
cout << '\n'; /***************************************************************************/
/* capacity(): 返回当前vector已分配的存储空间大小(按照所存元素类型),该值大于等于size() */
/* size(): 返回当前vector所实际存储的元素数目 */
/* max_size(): 该vector可以分配的最大内存空间(操作系统限制的) */
/* push_back():在vector末尾增加一个元素,将导致size数加1。当且仅当size数大于当前容量时, */
/* 引起vector内存重新分配(按内存非配器算法增加vector容量 */
/* pop_back(): 移除vector的最后一个元素,引起size减少1 */
/* begin(): 返回指向vector第一个元素的iterator */
/* end(): 返回指向vector最后一个元素的下一个元素的iterator, 不能取值。 */
/* cbegin(): 返回指向vector第一个元素的const iterator,不允许修改vector数据 */
/* cend(): 返回指向vector最后一个元素的下一个元素的const iterator, 不能取值。 */
/* at(): 返回at(position)中position的引用. */
/* front(): 返回vector第一個元素的引用. */
/* back(): 返回vector中最后一个元素的引用. */
/* clear(): 移除vector中所有的元素,将导致vector size为0.(capacity非强制变化). */
/**************************************************************************/
vector<int> vIntTest;
cout << "0:The size is " << vIntTest.size() << endl;
cout << "0:The capacity is " << vIntTest.capacity() << endl;
cout << "0:The max capacity is " << vIntTest.max_size() << endl; for (int i = 0; i < 10; i++)
vIntTest.push_back(i);
cout << "1:The size is " << vIntTest.size() << endl;
cout << "1:The capacity is " << vIntTest.capacity() << endl; vIntTest.pop_back();
cout << "2:The size is " << vIntTest.size() << endl;
cout << "2:The capacity is " << vIntTest.capacity() << endl; vIntTest.insert(vIntTest.end(), 10, 100);
cout << "3:The size is " << vIntTest.size() << endl;
cout << "3:The capacity is " << vIntTest.capacity() << endl; vIntTest.at(0) = 100;
vIntTest.at(1) = 200;
cout << "After set by at():";
for (vector<int>::iterator it = fifth.begin(); it != fifth.end(); ++it)
cout << ' ' << *it;
cout << '\n'; vIntTest.back() = 1000;
cout << "After set by back():";
for (vector<int>::iterator it = fifth.begin(); it != fifth.end(); ++it)
cout << ' ' << *it;
cout << '\n';
/***************************************************************************/
/* rbegin(): 返回指向vector最后一个元素的迭代器,对翻转迭代器加操作将导致其向前移动. */
/* empty(): 判斷vector是否為空并返回,空返回true,非空返回false */
/* resize(): 調整容器的size以包含n個元素,移除多餘的元素或增大內存空間 */
/* reserve(): 要求vector capacity至少包含n個元素,如果n大于當前capacity,vector容量將增加 */
/***************************************************************************/
vector<int> reserveVec(5);
vector<int>::reverse_iterator ri; int i=0;
for(ri=reserveVec.rbegin(); ri!=reserveVec.rend(); ri++)
{
*ri = ++i;
} cout<<"reserveVec contains: ";
for(vector<int>::iterator it= reserveVec.begin(); it != reserveVec.end(); it++)
cout<<"*it ";
cout<<endl; /***************************************************************************/
/* data(): 返回vector首元素的内部C类型指针,通过该指针完成所有的操作. */
/* empty(): 判斷vector是否為空并返回,空返回true,非空返回false */
/* resize(): 調整容器的size以包含n個元素,移除多餘的元素或增大內存空間 */
/* reserve(): 要求vector capacity至少包含n個元素,如果n大于當前capacity,vector容量將增加 */
/***************************************************************************/ //data()
/*vector<int> myvector(5); int* p = myvector.data(); *p = 10;
++p;
*p = 20;
p[2] = 100; cout << "myvector contains:";
for (unsigned i = 0; i < myvector.size(); ++i)
cout << ' ' << myvector[i];
cout << '\n';*/ // reserve()
vector<int>::size_type sz; vector<int> foo;
sz = foo.capacity();
std::cout << "making foo grow:\n";
for (int i = 0; i < 100; ++i) {
foo.push_back(i);
if (sz != foo.capacity()) {
sz = foo.capacity();
cout << "capacity changed: " << sz << '\n';
}
} vector<int> bar;
sz = bar.capacity();
bar.reserve(100); // this is the only difference with foo above
cout << "making bar grow:\n";
for (int i = 0; i < 100; ++i) {
bar.push_back(i);
if (sz != bar.capacity()) {
sz = bar.capacity();
cout << "capacity changed: " << sz << '\n';
}
} //resize
vector<int> myvector1; // set some initial content:
for (int i = 1; i < 10; i++)
myvector1.push_back(i); myvector1.resize(5);
myvector1.resize(8, 100);
myvector1.resize(12); cout << "myvector contains:";
for (int i = 0; i < myvector1.size(); i++)
cout << ' ' << myvector1[i];
cout << '\n';
//myvector contains: 1 2 3 4 5 100 100 100 0 0 0 0 }

Vector Demo的更多相关文章

  1. [javaSE] 集合框架(ArrayList,LinkedList,Vector)

    ArrayList特点:底层使用数组数据结构,查询速度快(使用脚标查),插入删除慢(索引要改变) LinkedList特点:底层使用链表数据结构,查询慢(需要一个一个去问),插入删除快 Vector特 ...

  2. 集合框架-Vector集合

    1 package cn.itcast.p1.vector.demo; 2 3 import java.util.Enumeration; 4 import java.util.Iterator; 5 ...

  3. C# 使用SIMD向量类型加速浮点数组求和运算(1):使用Vector4、Vector<T>

    作者: 目录 一.缘由 二.使用向量类型 2.1 基本算法 2.2 使用大小固定的向量(如 Vector4) 2.2.1 介绍 2.2.2 用Vector4编写浮点数组求和函数 2.3 使用大小与硬件 ...

  4. Scalaz(47)- scalaz-stream: 深入了解-Source

    scalaz-stream库的主要设计目标是实现函数式的I/O编程(functional I/O).这样用户就能使用功能单一的基础I/O函数组合成为功能完整的I/O程序.还有一个目标就是保证资源的安全 ...

  5. boost之bind

    bind1st bind2nd在stl里面有具体的实现,只是只能绑定两个参数. boost里面的bind使用bind(Fun f,A1 a1,A2,a2...)产生一个对象,这个对象可以有占位符,可以 ...

  6. PHP 类名::class含义

    自 PHP 5.5 起,关键词 class 也可用于类名的解析. 使用 ClassName::class 可以获取一个字符串,包含了类 ClassName 的完全限定名称.这对使用了命名空间的类尤其有 ...

  7. juc多线程编程学习

    JUC是java.util.concurrent的缩写,java.util.concurrent是在并发编程中使用的工具类. 在以前的解决并发问题,一般是通过Synchronize关键字,现在可以通过 ...

  8. Applying vector median filter on RGB image based on matlab

    前言: 最近想看看矢量中值滤波(Vector median filter, VMF)在GRB图像上的滤波效果,意外的是找了一大圈却发现网上没有现成的code,所以通过matab亲自实现了一个,需要学习 ...

  9. 关于QImage提取单色通道方法(vector)

    转载请标明处: 作者:微微苏荷 本文地址:关于QImage提取单色通道方法(vector) 近日,用QT和mxnet结合做一个图像识别的demo.遇到需要把图片从QImage转为vector单色分离的 ...

随机推荐

  1. <C#任务导引教程>练习二

    //6,goto语句求1+++100之和using System;class Program{    static void Main()    {        int i=1,sum=0;     ...

  2. [cf566C]Logistical Questions

    记$d(x,y)$为$x$到$y$的距离,$cost_{x}=\sum_{i=1}^{n}w_{i}d(x,i)^{\frac{3}{2}}$为$x$的代价 取$C$为足够大量,对于一条边权为$w$的 ...

  3. 2、使用HashOperations操作redis(Hash哈希表)

    文章来源:https://www.cnblogs.com/shiguotao-com/p/10560458.html 方法 c参数 s说明 Long delete(H key, Object... h ...

  4. page_fault_in_nonpaged_area异常解决方案(已解决)

    电脑在运行虚拟机的时候异常重启,多次打开结果一样,问了客服告诉我导致蓝屏的原因很多,可能是驱动不兼容,系统,或其他.{没点有用的} 百度到这个方案: 打开->此电脑->右键属性->高 ...

  5. mybatis新增账号并且返回主键id

    <!--新增账号和权限的关联关系--><insert id="save" useGeneratedKeys="true" keyPropert ...

  6. C#中的异步

    什么是异步? 作为一名Web端的码农,第一次接触异步是Ajax. 异步请求后端获取数据源,js操作html的dom节点,而无需要渲染整个网页的操作. 页面上点击按钮,加载进度动画,同时发起Ajax请求 ...

  7. File与IO基础

    IO流的作用:持久化到磁盘 File类的使用 File类基本概念 文件和文件夹都是用File类来表示. File类是内存层面的对象,内存中创建出来的File对象不一定有一个真实存在的文件或文件夹,但是 ...

  8. 洛谷 P4437 [HNOI/AHOI2018]排列(贪心+堆,思维题)

    题面传送门 开始 WA ycx 的遗产(bushi 首先可以将题目转化为图论模型:\(\forall i\) 连边 \(a_i\to i\),然后求图的一个拓扑序 \(b_1,b_2,\dots b_ ...

  9. FVCOM泥沙模块河流边界处理

    简介 入流河流携带泥沙可以按照节点和边界两种形式给定,这两种方法都是在相关的节点上进行直接赋值,并不能保证进入计算域内泥沙总体积. 相关设置 XX_run.nml 河流参数设置 &NML_RI ...

  10. 使用bioawk对基因组fasta序列ID(染色体/scaffold名称)排序?

    目录 需求 实现 需求 已知某基因组序列,染色体或scaffold ID顺序不定,想要对其按数字排序. 原顺序: 想要的排序结果: 实现 使用bioawk,没有的话conda直接安装. bioawk ...