vector初始化

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

混江龙づ霸主 提交于 2020-02-15 10:42:13
Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results. Note: The input string may contain letters other than the parentheses ( and ) . Example 1: Input: "()())()" Output: ["()()()", "(())()"] Example 2: Input: "(a)())()" Output: ["(a)()()", "(a())()"] Example 3: Input: ")(" Output: [""] Credits: Special thanks to @hpplayer for adding this problem and creating all test cases. Subscribe to see which companies asked this question 这道题让移除最少的括号使得给定字符串为一个合法的含有括号的字符串,我们从小数学里就有括号,所以应该对合法的含有括号的字符串并不陌生,字符串中的左右括号数应该相同,而且每个右括号左边一定有其对应的左括号

STL Vector的使用

隐身守侯 提交于 2020-02-14 17:43:21
数组作为基本的数据结构,有静态数组和动态数组两种类型。比赛中,空间足够,能用静态数组就静态,不然就用vector,最后才是用指针管理动态数组。 vector是一个模板类,其中的元素连续存储。 使用方法如下: 定义:常用的定义方法如下: 例子 说明 vector a; 默认初始化,a空 vector b(a); 用a定义b vector a(100); a有100个默认初始化为0的元素 vector a(100, -1); a用100个值为-1的元素 vector a(100, “hello”); a有100个值为"hello"的元素 vector a; a可以保存自定义的结构体类型 常见操作方法: 例子 说明 a.push_back(100); 尾部插入一个元素 a.emplace_back(100); 尾部构造一个元素 a.size() 元素个数 bool a.empty() 是否为空 a.insert(a.begin() + i, k); 插入一个元素 a.insert(a.end(), k, j); 在尾部插入k个值为j的元素 a.pop_back(); 删除尾部 a.erase(a.begin() + i, a.end() + j); 删除区间 a.erase(a.begin() + i); 删除元素 a.resize(n); 调整大小 a.clear(); 清空

C++中STL的容器适配器以及各容器的方法

空扰寡人 提交于 2020-02-13 17:51:38
一.容器适配器 1.stack 需要引入的头文件: #include<stack> 初始化方式: stack<int> stk; 成员函数介绍: stk.empty(); //判断stack是否为空,为空返回true,否则返回false stk.size(); //判断stack中元素的个数 stk.pop(); //删除栈顶元素,但不返回其值 stk.top(); //返回栈顶元素的值,但不删除此元素 stk.push(item) //在栈顶压入新元素item 2.queue 需要引入的头文件: #include<queue>; 初始化方式: queue<int> q; 成员函数介绍: q.empty(); //判断队列是否为空 q.size(); //返回队列长度 q.push(item); //对于queue,在队尾压入一个新元素 //对于priority_queue,在基于优先级的适当位置插入新元素 q.front(); //返回队首元素的值,但不删除该元素 q.back(); //返回队尾元素的值,但不删除该元素 q.top(); //返回具有最高优先级的元素值,但不删除该元素 二、常用容器用法介绍 1.vector 需要引入的头文件: #include<vector> using namespace std; 初始化方式: vector<int>obj; 成员函数介绍:

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

房东的猫 提交于 2020-02-12 03:51:03
You are given two integer arrays nums1 and nums2 sorted in ascending order and an integer k. Define a pair (u,v) which consists of one element from the first array and one element from the second array. Find the k pairs (u1,v1),(u2,v2) ...(uk,vk) with the smallest sums. Example 1: Given nums1 = [1,7,11], nums2 = [2,4,6], k = 3 Return: [1,2],[1,4],[1,6] The first 3 pairs are returned from the sequence: [1,2],[1,4],[1,6],[7,2],[7,4],[11,2],[7,6],[11,4],[11,6] Example 2: Given nums1 = [1,1,2], nums2 = [1,2,3], k = 2 Return: [1,1],[1,1] The first 2 pairs are returned from the sequence: [1,1],[1,1]

让自己习惯C++

ぐ巨炮叔叔 提交于 2020-02-11 21:14:24
  所谓声明式是告诉编译器某个东西的名称和类型,但是略去细节。   每个函数的声明式揭示其签名式,也就是参数和返回类型,一个函数的签名等同于该函数的类型。   定义式的任务是提供声明式所遗漏的一些细节,对对象而言,定义式是编译器为此对象拨发内存地点,对function或function template而言,定义式提供了代码本体,对class或class template而言,定义式列出了他们的成员。   初始化是“给予对象初值的过程”,对用户自定义类型的对象而言,初始化由构造函数执行。   default构造函数是一个可被调用而不带任何实参者,这样的函数要不没有参数,要不每个参数都有缺省值。copy构造函数被用来“以同型对象初始化自我对象”,copy assignment操作符是被用来从一个同型对象中拷贝值到自我对象,区别在于有没有个新对象被定义。 条款01:视C++为一个语言联邦 C:说到底C++仍是以C为基础。区块,语句,预处理器,内置数据类型,数组,指针统统来自C。 Object-Oreinted C++:这一部分是面向对象设计之古典守则在C++上的最直接实施。类,封装,继承,多态,virtual函数等等... Template C++:这是C++泛型编程部分。 STL。STL是个template程序库:容器(containers),迭代器(iterators),算法

STL学习(二)vector

徘徊边缘 提交于 2020-02-11 06:43:29
一.介绍 是动态数组,是连续的空间,如果空间不够用,会申请一个更大的连续的空间,同时 迭代器失效 头文件为#include< vector >; 二.构造函数 (为了方便省略< T >) vector(); 无参数的构造 vector(count); n个元素,和数组类似 vector( n,elem ); 用num个val来初始化容器 5个1 6个‘a’ vector( const vector &from ); 拷贝构造 一定是同种类型元素的vector 用另一个vector对象初始化当前的vector对象 vector( begin,end ); 构造函数将[a,b)区间元素拷贝给本身,注意该区间 左开右闭 三.属性 (一)容量 Visual Studio定义对象的时候初始化几个,无参数就是零 容量不够时增加现有容量的一半。比如现有10个,新的就是15个,现有13个;增加13/2==6个,就是19个 VC++6.0 无参数就是0 容量不够时增加现有容量的一倍。比如现有10个,新的就是20个;现有20个,新的就是40个 reserve(); //可以提前预留空间以提高效率, vector < int > v ( 10 ) ; //capacity为10,size也为10,里面放有元素,加数据要重新申请内存 vector < int > v ; v . reserve ( 10

c++之容器详解

十年热恋 提交于 2020-02-10 15:47:37
5. 类模板编程 有时候继承、包含并不能满足重用代码的需要,这一般在容器类里面体现的尤为突出。例如: 我们定义了一个容器类,Container, 这个Container类可以实现类似verctor一样的工作,能保存数据,能修改数据,并且 数据的类型不限制 ,但是 针对数据的操作都是一样 的。那么类模板编程就成了不二之选了。 1. 定义模板类 这里以栈作为参照对象,定义一个模板类,实现栈一样的功能。 原始代码 class Stack{ private : enum{MAX = 10}; //表示这个Stack容器最多只能装10个。 int top =0 ; //表示最顶上的索引位置 string items[MAX]; //定义一个数组,以便一会装10个元素 public: bool isempty(){ return top == 0; } bool isfull(){ return top == MAX; } //压栈 int push(string val){ if(isfull()){ return -1; } //没有满就可以往里面存 items[top++] = val; } //出栈 string pop(){ if (isempty()){ return ""; } //如果不是空 top 只是指向位置,而数组获取数据,索引从0开始,所以先-- return

图像处理

与世无争的帅哥 提交于 2020-02-09 01:41:57
# -*- coding: utf-8 -*- """ Created on Mon Sep 24 18:23:04 2018 @author: zy """ # 代码来源GitHub:https://github.com/PENGZhaoqing/Hog-feature # https://blog.csdn.net/ppp8300885/article/details/71078555 # https://www.leiphone.com/news/201708/ZKsGd2JRKr766wEd.html import cv2 import numpy as np import math import matplotlib.pyplot as plt class Hog_descriptor(): ''' HOG描述符的实现 ''' def __init__(self, img, cell_size=8, bin_size=36): ''' 构造函数 默认参数,一个block由2x2个cell组成,步长为1个cell大小 args: img:输入图像(更准确的说是检测窗口),这里要求为灰度图像 对于行人检测图像大小一般为128x64 即是输入图像上的一小块裁切区域 cell_size:细胞单元的大小 如8,表示8x8个像素 bin_size:直方图的bin个数 ''' self

c++ primer 练习10.4.2

社会主义新天地 提交于 2020-02-08 20:36:12
c++ primer 练习10.4.2 本节练习主要是关于stream iterator的。这个组件感觉很有用!在数据输入输出,初始化,与STL algorithm的交互方面都有很大的作用。代码如下: # include <iostream> # include <fstream> # include <sstream> # include <numeric> # include <vector> # include <iterator> # include <algorithm> # include "Sales_item" using namespace std ; void func_1029 ( vector < string > & vst ) ; void func_1030 ( vector < int > & vst ) ; void func_1031 ( vector < int > & vst ) ; void func_1032 ( vector < Sales_item > & total ) ; void func_1033 ( const string & infile , const string & outfile1 , const string & outfile2 ) ; bool CompareIsbn ( const Sales_item

LeetCode——542. 01 矩阵

我们两清 提交于 2020-02-08 13:09:11
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入: 0 0 0 0 1 0 0 0 0 输出: 0 0 0 0 1 0 0 0 0 示例 2: 输入: 0 0 0 0 1 0 1 1 1 输出: 0 0 0 0 1 0 1 2 1 注意: 给定矩阵的元素个数不超过 10000。 给定矩阵中至少有一个元素是 0。 矩阵中的元素只在四个方向上相邻: 上、下、左、右。 一 我们可以首先遍历一次矩阵,将值为0的点都存入queue,将值为1的点改为INT_MAX。然后开始BFS遍历,从queue中取出一个数字,遍历其周围四个点,如果越界或者周围点的值小于等于当前值加1,则直接跳过。因为周围点的距离更小的话,就没有更新的必要,否则将周围点的值更新为当前值加1,然后把周围点的坐标加入queue,参见代码如下: 解法一: class Solution { public: vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) { int m = matrix.size(), n = matrix[0].size(); vector<vector<int>> dirs{{0,-1},{-1,0},{0,1},{1,0}}; queue<pair<int, int