第6章 vector向量容器

/*

第三篇 C++STL容器技术
  第6章 vector向量容器
   6.1 vector技术原理
   6.2 vector应用基础
   6.3 本章小结

*/

//  第6章 vector向量容器
//   6.1 vector技术原理 -------------------------------------------------------------------------------------------

//   6.2 vector应用基础 -------------------------------------------------------------------------------------------

// 95
#include <vector>
#include <iostream>
int main(void)
{
  using namespace std;
  vector < int > v;
  v.push_back(20);
  v.push_back(26);
  v.push_back(39);
  for(size_t i = 0; i < v.size(); i++)
    cout << "v[" << i << "] = " << v[i] << endl;
  return 0;
}

//96
#include <vector>
#include <iostream>
int main(void)
{
  using namespace std;
  vector < int > v;
  v.push_back(20);
  v.push_back(26);
  v.push_back(39);
  vector < int > ::iterator i, iend;
  iend = v.end();
  int j;
  for(i = v.begin(), j = 0; i != iend; i++, j++)
    cout << "v[" << j << "] = " <<  *i << endl;
  return 0;
}

// 96 , insert
#include <vector>
#include <iostream>
int main(void)
{
  using namespace std;
  vector < int > v;
  v.push_back(6);
  v.push_back(7);
  v.push_back(8);
  v.push_back(10);
  v.insert(v.begin() + 3, 9); //在元素10的前面插入9
  v.insert(v.begin(), 5); //插入5为首元素
  v.insert(v.end(), 11); //插入11为末元素
  for(size_t i = 0; i < v.size(); i++)
    cout << "v[" << i << "] = " << v[i] << endl;
  return 0;
}

// 97, erase
#include <iostream>
#include <vector>
class MyAnimal
{
  public:
    char *name;
    int age;
  public:
    MyAnimal(char *name, int age)
    {
        this->name = name;
        this->age = age;
    }
    ~MyAnimal(){}
};

int main(void)
{
  using namespace std;
  MyAnimal *pDog = new MyAnimal("dog", 1);
  MyAnimal *pMonkey = new MyAnimal("monkey", 2);
  MyAnimal *pChicken = new MyAnimal("chicken", 3);
  MyAnimal *pSnake = new MyAnimal("snake", 4);
  vector < MyAnimal * > v; //v将存放各对象的地址
  v.push_back(pDog);
  v.push_back(pMonkey);
  v.push_back(pChicken);
  v.push_back(pSnake);
  delete pMonkey; //物理删除pMonkey所指的对象
  v.erase(v.begin() + 1); //删除第2个元素,即抹去了vector的pMonkey地址
  vector < MyAnimal * > ::iterator i, iend;
  iend = v.end();
  for(i = v.begin(); i != iend; i++)
    cout << (*i)->name << ‘ ‘ << (*i)->age << endl;
  v.clear(); //清除所有vector元素
  cout << "执行clear()" << endl << "vector元素已全部清除" << endl;
  return 0;
}

// 98, 反向遍历
#include <vector>
#include <iostream>
int main(void)
{
  using namespace std;
  vector < int > v;
  v.push_back(1);
  v.push_back(3);
  v.push_back(5);
  v.push_back(7);
  v.push_back(9);
  vector < int > ::reverse_iterator ri, riend; //
  riend = v.rend();
  for(ri = v.rbegin(); ri != riend; ri++)
    cout <<  *ri << endl;
  return 0;
}

// 99, swap
#include <vector>
#include <iostream>
using namespace std;
void print(vector < int >  &v);
int main(void)
{
  //v1
  vector < int > v1;
  v1.push_back(11);
  v1.push_back(12);
  v1.push_back(13);
  cout << "v1 = ";
  print(v1);
  //v2
  vector < int > v2;
  v2.push_back(90);
  v2.push_back(92);
  cout << "v2 = ";
  print(v2);
  //v1与v2交换
  v1.swap(v2); // v1和v2元素个数不必相等
  cout << "v1与v2交换后" << endl;
  cout << "v1 = ";
  print(v1);
  cout << "v2 = ";
  print(v2);
  return 0;
}
void print(vector < int >  &v)
{
  for(size_t i = 0; i < v.size(); i++)
    cout << v[i] << " ";
  cout << endl;
}

// 100
#include <vector>
#include <iostream>
using namespace std;
void print(vector < int >  &v);
int main(void)
{
  using namespace std;
  vector < int > v;
  print(v);
  //添加5个元素
  v.push_back(1);
  v.push_back(2);
  v.push_back(3);
  v.push_back(4);
  v.push_back(5);
  print(v);
  //再添加4个元素
  v.push_back(6);
  v.push_back(7);
  v.push_back(8);
  v.push_back(9);
  print(v);
  //调整vector数据空间大小
  v.reserve(30);
  print(v);
  return 0;
}
void print(vector < int >  &v)
{
  cout << "---------------------" << endl;
  cout << "empty = " << v.empty() << endl;
  cout << "size = " << v.size() << endl;
  cout << "max_size = " << v.max_size() << endl;
  cout << "capacity = " << v.capacity() << endl;
}

//   6.3 本章小结 -------------------------------------------------------------------------------------------

TOP

时间: 2024-10-12 08:32:33

第6章 vector向量容器的相关文章

标准模板库使用参考——vector向量容器

C++的STL从广义上讲分为algorithm(算法),container(容器)和iterator(迭代器)三类,包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法. 在C++标准库中,STL被组织成为下面的13个头文件:<algorithm>, <deque>, <functional>, <iterator>, <vector>, <list>, <map>, <memory>, <nume

C++STL之vector向量容器

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

C++ STL vector 向量容器 基本方法

创建vector对象 1.不指定容器大小 vector<int> vec; 2.指定容器大小 vector<int> vec(10); 3.指定容器大小和初始值 vector<int> vec(10,0); 尾部元素扩张 vec.push_back(); 插入元素 1.在最前面插入元素 vec.insert(vec.begin() , 2); 2.在第二个元素前插入元素 vec.insert(vec.begin()+2 , 2); 3.在末尾插入元素 vec.inser

vector向量容器

vector容器是数组的一个泛化推广,不仅可以像数组那样进行元素的随机访问,还可以在容器的尾端插入新元素,实现了Random Access Container和Back Insertion Sequence概念.vector具有自动的内存管理功能,对于元素的插入和删除,能够动态调整占用的内存空间. 创建vector对象 有多种方式 (1) vector(constA&a=A()) 创建一个空的vector对象,A是内存分配器,此参数可以省略,相当于一个vector()的调用,如: vector&l

oj教程--向量容器

vector向量容器不但像数组一样对元素进行随机访问,还能在尾部插入元素,是一个简单.高效的容器, 完全可以替代数组.vector具有内存自动管理的功能,对于元素的插入和删除,可动态调整所占用的内存空间. 使用vector向量容器,需要头文件包含声明"#include 一.创建vector对象 vector<type> vec1; // v1保存类型为type的对象,默认构造函数,v1为空 vector<type> vec2(size); // v2含有值初始化的元素的s

C++ STL中vector(向量容器)使用简单介绍

原文:http://www.seacha.com/article.php/knowledge/cbase/2013/0903/2205.html C++ vector(向量容器)是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组,或者作为动态内存. 在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,这个大小即cap

C++中 vector(容器)的用法

vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector 还有一定要加上using namespace std; 2.变量声明: 2.1 例:声明一个int向量以替代一维的数组:vector <int> a;(等于声明了一个int数组a[],大小没有指定,

第20章 priority_queue优先队列容器

/* 第20章 priority_queue优先队列容器 20.1 priority_queue技术原理 20.2 priority_queue应用基础 20.3 本章小结 */ // 第20章 priority_queue优先队列容器 // 20.1 priority_queue技术原理 // 20.2 priority_queue应用基础 -----------------------------------------------------------------------------

第19章 queue队列容器

/* 第19章 queue队列容器 19.1 queue技术原理 19.2 queue应用基础 19.3 本章小结 */ // 第19章 queue队列容器 // 19.1 queue技术原理 // 19.2 queue应用基础 ------------------------------------------------------------------------------------------- //273 #include <queue> #include <iostre