vector初始化

C++ vector和unordered_map浅析

有些话、适合烂在心里 提交于 2020-01-05 05:28:29
C++内置的数组支持容器的机制,可是它不支持容器抽象的语义。要解决此问题我们自己实现这种类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。可以说vector的引入,方便了我们对一系列数据的处理,相比于数组,我们不用考虑下标越界等溢出问题了。 使用vecor,需要引入头文件#include <vector>,命名空间需要引入using std::vector,再补充一下,vector是连续存储的!!! 简单的存储操作: vector<int> v1; for (vector<int>::size_type i = 0; i < 10; i++) { v1.push_back(i); } cout << "adjective:"; for (vector<int>::size_type i = 0; i < 10; i++) { cout << v1[i] << setw(4); } 然后比较坑的这个,注意一下就OK了: //v1中有n个值为i的元素 vector<int> v1(n,i); //v2中只有n和i两个元素 vector<int> v2({n,i}); 切记我们初始化的时候不能直接v1[i]=value,只能使用v1.push_back(i); 详细的介绍请看 https://www.cnblogs.com/mengfanrong/p

vector容器的用法

强颜欢笑 提交于 2020-01-05 05:28:00
转自一篇博客^-^: 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.push_back(a); (4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。 (5)使用迭代器访问元素. vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl; (6)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a; (7)删除元素: vec.erase(vec.begin()+2);删除第3个元素 vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始 (8)向量大小:vec.size(); (9)清空:vec.clear(); 2 vector的元素不仅仅可以使int,double,string,还可以是结构体,但是要注意:结构体要定义为全局的,否则会出错。下面是一段简短的程序代码: #include<stdio.h> #include<algorithm> #include<vector> #include<iostream> using namespace

剑指offer第五章

二次信任 提交于 2019-12-31 20:25:14
剑指offer第五章 1.数组中出现次数超过一半的数 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 分析: 思路1:数组排序,排序之后中间的数字一定是出现次数超过数组长度一半的数字,也就是统计学上的中位数,即长度为n的数组中第n/2大的数字(数组中任意第k大的数字) 1 class Solution { 2 public: 3 int MoreThanHalfNum_Solution(vector<int> numbers) 4 { 5 int length=numbers.size(); 6 int ans=0; 7 if(numbers.empty()) 8 return 0; 9 sort(numbers.begin(),numbers.end());//排序 10 int midNum=numbers[length/2]; 11 12 int count=0;//统计次数初始化 13 for(int i=0;i<length;i++) 14 { 15 if(numbers[i]==midNum) 16 ++count;//次数统计 17 } 18 if(count>length/2)//进行判断,是否为要求

【dart学习】-- Dart之类和对象

你说的曾经没有我的故事 提交于 2019-12-30 05:38:38
一,概述    类 (Class)是面向对象程序设计,实现信息封装的基础。类是一种用户定义的类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。 Dart的类与其它语言都有很大的区别,比如在dart的类中可以有无数个构造函数,可以重写类中的操作符,有默认的构造函数,由于dart没有接口,所以dart的类也是接口,因此你可以将类作为接口来重新实现。   Dart是一门使用类和单继承的面向对象语言所有的对象都是类的实例,并且所有的类都是 Object 的子类。 二,类定义 类的定义用 class 关键字 如果未显式定义构造函数,会默认一个空的构造函数 类首字母必须大写 使用 new 关键字和 构造函数 来创建对象 class Person { //未定义父类的时候,默认继承自Object num x; num y; num z; } void main(List<String> args){ var person = new Person();//调用默认的构造函数 person.x = 10; //使用点(.)引用实例变量或方法 person.y = 11; person?.z = 12; //如果p不为空,设置它的变量y的值为4 print(person.x); print(person.y); print(person.z); } 结果: 10 11 12

C++ Primer Plus (第6版) 中文版 第十一章 使用类 编程练习答案

这一生的挚爱 提交于 2019-12-28 02:47:28
第十一章 编程练习 1 .修改程序清单11.15, 使之将一系列连续的随机漫步者位置写入文件中。对于每个位置,用步号进行标示。另外,让该程序将初始条件(目标距离和步长)以结果小结写入到该文件中。 头文件: // vect.h -- Vector class with <<, mode state # ifndef VECTOR_H_ # define VECTOR_H_ # include <iostream> namespace VECTOR { class Vector { public : enum Mode { RECT , POL } ; // RECT for rectangular, POL for Polar modes private : double x ; // horizontal value double y ; // vertical value double mag ; // length of vector double ang ; // direction of vector in degrees Mode mode ; // RECT or POL // private methods for setting values void set_mag ( ) ; void set_ang ( ) ; void set_x ( ) ; void

Maximal Square leetcode

爷,独闯天下 提交于 2019-12-26 15:54:51
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and return its area. For example, given the following matrix: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 Return 4. 分析:这是一道DP题,首先说明,动态规划最重要的就是要找到那个递推公式!然而这道题目的递推公式,我也是网上搜索到的!无法正面递归过去。但是,我认为,数学中的一句名言:你解决的问题越多,你能解决下一道问题的概率就越大。所以好好加油吧,自己接触动态规划的时间还不长,加强训练,好好加油! 该题的递推公式:首先令f(i,j)表示以(i,j)为右下角的正方形的边长(构成最大的全'1'正方形)。   那么,f(i,j)=Min{f(i-1,j),f(i-1,j-1),f(i,j-1)}+1,该公式的前提是:当前点(i,j)的值必须为1.   递归,应当从左上角开始,逐行遍历下去,当然第一行(序号0),第一列(序号为0)没有必要进行,直接将其值初始化为所在点的原值。   代码如下:(首先去除数组为空之类的边界条件)    1 #include<iostream> 2 #include

LeetCode All in One 题目讲解汇总(持续更新中...)

走远了吗. 提交于 2019-12-26 00:30:24
Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing only 1's and return its area. Example: Input: [ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ["1","0","0","1","0"] ] Output: 6 此题是之前那道的 Largest Rectangle in Histogram 的扩展,这道题的二维矩阵每一层向上都可以看做一个直方图,输入矩阵有多少行,就可以形成多少个直方图,对每个直方图都调用 Largest Rectangle in Histogram 中的方法,就可以得到最大的矩形面积。那么这道题唯一要做的就是将每一层都当作直方图的底层,并向上构造整个直方图,由于题目限定了输入矩阵的字符只有 '0' 和 '1' 两种,所以处理起来也相对简单。方法是,对于每一个点,如果是 ‘0’,则赋0,如果是 ‘1’,就赋之前的 height 值加上1。具体参见代码如下: 解法一: class Solution { public: int maximalRectangle(vector<vector<char> >

01背包、完全背包、多重背包

亡梦爱人 提交于 2019-12-24 07:03:26
参考(都有些错误):https://github.com/guanjunjian/Interview-Summary/blob/master/notes/algorithms/%E7%BB%8F%E5%85%B8%E7%AE%97%E6%B3%95/01%E8%83%8C%E5%8C%85.mdhttps://blog.csdn.net/na_beginning/article/details/62884939 #include <iostream> #include <sstream> #include <vector> #include <string> using namespace std; /* 01背包问题 每个物品仅一个 状态转移公式:F[i][j] = F[i - 1][j] 和 F[i - 1][j - W[i]] + V[i] 大的那个值 C背包总重量 W每个物品重量 V每个物品价值 n物品总数 inp具有最大价值时,标记哪个物品在包中 返回最大价值 */ int packages(int C, vector<int> &W, vector<int> &V, int n, vector<int> &inp) { vector<vector<int> > F(n, vector<int>(C + 1));//F[i][j]记录背包可用重量为j时

C++学习笔记二:vector(向量)

偶尔善良 提交于 2019-12-23 10:24:54
C++学习笔记二:vector(向量) 介绍 用法 介绍 vector是一个可存储任意类型数据的动态数组。 分配空间方式:当分配空间不够时,会申请更大的内存空间(增长倍数:2),将原数据拷贝到新的内存块中,释放原内存空间。[连续线性空间] 用法 1. 声明和初始化 int size = 10 ; int a = 1 ; int arr [ 5 ] = { 1 , 2 , 3 , 4 , 5 } ; //vector construction vector < int > v1 ; //vector initialization:five types vector < int > v1 ( size ) ; //type 1 vector < int > v1 ( size , 5 ) ; //type 2 vector < int > v2 ( v1 ) ; //type 3 vector < int > v2 ( v1 . begin ( ) , v1 . begin ( ) + 4 ) ; //type 4 vector < int > v2 ( arr , arr + 2 ) ; //type 5 2. 基本操作 (1)字符串拼接 v1 . push_back ( a ) ; // 尾部插入 v1 . pop_back ( ) ; //尾部删除 v1 . insert (

STL顺序容器vector、deque、list

梦想的初衷 提交于 2019-12-23 09:08:39
1.可变长动态数组 vector vector 支持随机访问迭代器,所有 STL 算法都能对 vector 进行操作,使用 vector,需要包含头文件vector vector 容器中,根据下标随机访问某个元素的时间是常数,假设a是某个vector类型的对象,可以用a[n]或者a.at(n)访问随机位置。 在尾部添加一个元素的时间大多数情况下也是常数,在遇到空间不足需要重新分配内存空间时,把原有内容复制过去后再添加新的元素。碰到这种情况,添加新元素所花的时间就不是常数,而是和数组中的元素个数成正比。 遇到在中间插入或删除元素时,因为要移动多个元素,平均花费的时间和容器中的元素个数成正比 vector常用的成员函数 成员函数 作 用 vector() 无参构造函数,将容器初始化为空 vector(int n) 将容器初始化为有 n 个元素 vector(int n, const T & val) 假定元素的类型是 T,此构造函数将容器初始化为有 n 个元素,每 个元素的值都是 val vector(iterator first, iterator last) first 和 last 可以是其他容器的迭代器。一般来说,本构造函数初始化的结果就是将 vector 容器的内容变成与其他容器上的区间 [first, last) —致 void clear() 删除所有元素 bool