首页 > 编程语言 >c++ vector

c++ vector

时间:2022-10-01 23:55:44浏览次数:62  
标签:back c++ vector push 赋值 resize size

创建vector

vector的几个别名:向量、动态数组

头文件:

#include <vector>

记得加上std命名空间,不然会报错

using namespace std;

创建vector

vector<int> A;//一维动态数组
vector<vector<int> > B;//二维动态数组

创建二维动态数组时,与 > 之间需要" "空格间隔,否则将会被识别为位运算符>>

常用函数

真的很常用的几个嗷

//push_back() 在向量的末尾插入值,如果有必要会扩展向量的大小
A.push_back(c);

//size() 显示向量的大小
A.size();
    
//begin() 返回一个指向向量开头的迭代器
//end() 返回一个指向向量末尾的迭代器   
// 使用迭代器 iterator 访问值
vector<int>::iterator v = vec.begin();
while( v != vec.end()) {
    cout << "value of v = " << *v << endl;
    v++;
}

//访问vector中的值
cout << A[i];//此时vector退化为数组

//clear() 清除向量中的内容
A.clear();

resize()

//resize(size_type n) 调整容器大小,使其包含n个元素 size_type是无符号整型
//resize(size_type n, const value_type& val) 调整容器大小,如果当前大小小于n需要扩容,则将新元素初始化为val的副本,否则将对它们进行值初始化?.
A.resize(5);
A.resize(8,100);

如果n小于当前容器大小,则内容减少到n,删除超出范围的元素
如果n大于当前容器大小,则在末尾插入元素来扩展内容达到n的大小
如果n也大于当前容器容量,将自动重新分配已分配的存储空间?(啥意思没看懂)

reserve()

除了resize()还有一个reserve()与之对应,reserve用来改变capacity的值。

具体内容可以参考

https://www.runoob.com/note/27430

二维vector的赋值

1、push_back()

使用push_back()赋值

vector<int> A;//一维动态数组
vector<vector<int> > B;//二维动态数组

A.push_back(1);
A.push_back(2);
A.push_back(3);
B.push_back(A);
A.clear();
A.push_back(4);
A.push_back(5);
A.push_back(6);
B.push_back(A);
A.clear();

vector B中:

1 2 3
4 5 6

2、定义并赋初值或遍历赋值

vector<vector<int> > A(5,vector<int>(3,0));//5行3列,初值为0

除了赋初值也可以定义大小后再遍历赋值

3、resize()调整容器大小或遍历赋值

vector<int> A;
A.resize(m);//m行
for(int i = 0; i < m; i++) A[i].resize(n);//n列
//遍历赋值
for(int i = 0; i < m; i++)
{
	for(int j = 0; j < n; j++)
	{
		a[i][j] = a;
	}
}

标签:back,c++,vector,push,赋值,resize,size
From: https://www.cnblogs.com/chengzhid/p/16748034.html

相关文章

  • C++智能指针
    C++智能指针需要头文件<memory>不需要手动释放指针不是所有指针都能封装成智能指针,很多时候原始指针更加方便。std::unique_ptr任何时刻都只能有一个指针管理内存......
  • C++ 编程中常用的英文单词(首字母是A、B、C开头)
    学习编程不一定需要英语水平很高,能记住认识一些常用的英文单词也可以,有看不明白的文档资料也可以使用翻译工具,编写代码时大部分好用的IDE都是有代码提示的。本文主要介绍C+......
  • C++ 编程中常用的英文单词(首字母是D、E、F开头)
    学习编程不一定需要英语水平很高,能记住认识一些常用的英文单词也可以,有看不明白的文档资料也可以使用翻译工具,编写代码时大部分好用的IDE都是有代码提示的。本文主要介绍C+......
  • 对c++的一些思考
    能用初始化列表就用能写explicit就写能用c++11自带的跨平台函数、对象就用、但也要分情况,如果想完全知道自己在干什么就用系统API能自己写的就不要让编译器......
  • C++ 彩票器
    #include<iostream>#include<ctime>#include<cstdlib>usingnamespacestd;intmain(intargc,char**argv){//1.获取一下你买的彩票号码intnumber=0;......
  • 贤鱼的刷题日常-【c++】P7909 [CSP-J 2021] 分糖果
    ✅创作者:贤鱼⏰预计时间:15分钟@​​TOC​​题目题目背景红太阳幼儿园的小朋友们开始分糖果啦!题目描述红太阳幼儿园有n个小朋友,你是其中之一。保证n≥2。有一天你在幼儿园......
  • array - vector- deque
    array  不支持动态的新增删除操作特点大小固定 无法增加或移除元素改变其大小      vector矢量(顺序表)   是封装动态数组的顺序容器 //缺点......
  • C++ 第46课八卦图读取
    #include<bits/stdc++.h>#include"minecraft.h"usingnamespacestd;TxMinecraftmc;stringmeiju(stringX,stringZ){ stringx,z; intid=251,data=15,cis......
  • C++_Windows Socket 学习记录_01
    主要实现服务器-服务器传输消息Server.cpp#include<stdio.h>#include<stdlib.h>#include<WinSock2.h>#include<iostream>#pragmacomment(lib,"ws2_32.lib")us......
  • VSCode + WSL + clangd +CMake + CMake Tools搭建C++开发环境
    前言开始安装前先了解以下概念:gcc,llvm,clang区别与联系:详解三大编译器:gcc、llvm和clangclangd是什么?Whatisclangd?与LLVM每日谈之二十五Clangd和LSP简而言之cl......