C++ vector向量类模板的使用及解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: C++ vector向量类模板的使用及解析

vector向量是一种随机访问的数组类型,提供了对数组元素的快速和随机访问,以及在序列尾部快速、随机的插入和删除操作。其大小可变,在需要时可以改变数组大小


头文件要导入#include<vector>


为整型值创建一个空std::vector对象可以使用这样的语句


std::vector<int>intvector


包括vector模板中有很多种方法可以调用 下面是测试源码,如需自取

#include<iostream>
#include<vector>
#include<stdarg.h>
using namespace std;
using std::cout;
using std::endl;
using std::vector;
int mai(int argc, char* argv[])
{
  vector<int>v1, v2;
  v1.reserve(10);
  v2.reserve(10);
  v1 = vector<int>(8, 7);
  int array[8] = { 1,1,54,24,131,42,42,1331 };
  v2 = vector<int>(array, array + 8);
  cout << "v1容量" << v1.capacity() << endl;
  cout << "v2容量" << v2.capacity() << endl;
  for (decltype(v2.size())i = 0; i < v1.size(); i++) {
    cout << " " << v1[i];
  }
  cout << endl;
  cout << "v2容量" << v2.capacity() << endl;
  cout << "v2当前各项" << endl;
  for (vector<int>::size_type i = 0; i < v1.size(); i++) {
    cout << " " << v2[i] << endl;
  }
  cout << endl;
  v1.resize(0);
  cout << "v1的容量通过resize函数变成0" << endl;
  if (!v1.empty())
    cout << "v1容量" << v1.capacity() << endl;
  else
    cout << "v1是空的" << endl;
  cout << "将v1容量扩展为8" << endl;
  v1.resize(8);
  cout << "v1当前各项" << endl;
  for (decltype(v1.size())i = 0; i < v1.size(); i++)
  {
    cout << "" << v1[i] << endl;
  }
  cout << endl;
  v1.swap(v2);
  cout << "v1与v2交换了" << endl;
  cout << "v1当前各项" << endl;
  cout << "v1容量" << v1.capacity() << endl;
  for (decltype(v1.size())i = 0; i < v1.size(); i++) {
    cout << " " << v1[i] << endl;
  }
  cout << endl;
  v1.push_back(3);
  cout << "v1从后边加入了元素3" << endl;
  cout << "v1容量" << v1.capacity() << endl;
  for (decltype(v1.size())i = 0; i < v1.size(); i++)
  {
    cout << " " << v1[i] << endl;
  }
  cout << endl;
  v1.erase(v1.end() - 2);
  cout << "删除了倒数第二个元素" << endl;
  cout << "v1容量" << v1.capacity() << endl;
  cout << "v1当前各项" << endl;
  for (vector<int>::size_type i = 0; i < v1.size(); i++) {
    cout << " " << v1[i] << endl;
  }
  cout << endl;
  v1.pop_back();
  cout << "v1通过栈操作放走了最后的元素" << endl;
  cout << "v1当前各项" << endl;
  cout << "v1容量" << v1.capacity() << endl;
  for (vector<int>::size_type i = 0; i < v1.size(); i++) {
    cout << " " << v1[i] << endl;
  }
  cout << endl;
  return 0;
}


相关文章
|
13天前
|
自然语言处理 编译器 Linux
|
4天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
21 4
|
5天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
18 4
|
18天前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
28天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
24 4
|
28天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
19 1
|
28天前
|
编译器 程序员 C++
【C++打怪之路Lv7】-- 模板初阶
【C++打怪之路Lv7】-- 模板初阶
14 1
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
66 0
|
1月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
52 0
|
1月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
59 0