vector初始化

论C++11 中vector的N种遍历方法

不想你离开。 提交于 2020-03-04 15:06:29
随着C++11标准的出现,C++标准添加了许多有用的特性,C++代码的写法也有比较多的变化。 vector是经常要使用到的std组件,对于vector的遍历,本文罗列了若干种写法。 ( 注:本文中代码为C++11标准的代码,需要在较新的编译器中编译运行 ) 假设有这样的一个vector:(注意,这种列表初始化的方法是c++11中新增语法) vector<int> valList = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 需要输出这个vector中的每个元素,测试原型如下: void ShowVec(const vector<int>& valList) { } int main(int argc, char* argv[]) { vector<int> valList = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; ShowVec(valList); return 0; } 下面就开始我们的茴香豆的N种写法吧 ! 方法零 ,对C念念不舍的童鞋们习惯的写法: void ShowVec(const vector<int>& valList) { int count = valList.size(); for (int i = 0; i < count;i++) { cout << valList[i] << endl; } } 或者

程序员面试金典 - 面试题 10.01. 合并排序的数组

南楼画角 提交于 2020-03-03 10:07:56
1. 题目 给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。 初始化 A 和 B 的元素数量分别为 m 和 n。 示例 : 输入 : A = [ 1 , 2 , 3 , 0 , 0 , 0 ] , m = 3 B = [ 2 , 5 , 6 ] , n = 3 输出 : [ 1 , 2 , 2 , 3 , 5 , 6 ] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sorted-merge-lcci 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 2. 解题 依次比较大小插入A中即可 class Solution { public : void merge ( vector < int > & A , int m , vector < int > & B , int n ) { int i = 0 , j = 0 , count = m + n ; while ( m & & n ) { if ( A [ i ] <= B [ j ] ) i + + , m - - ; else { A . insert ( A . begin ( ) + i , B [ j + + ] ) ; n - - ; i + + ; } } while

[LeetCode] 935. Knight Dialer 骑士拨号器

ε祈祈猫儿з 提交于 2020-03-02 08:10:06
A chess knight can move as indicated in the chess diagram below: . This time, we place our chess knight on any numbered key of a phone pad (indicated above), and the knight makes N-1 hops. Each hop must be from one key to another numbered key. Each time it lands on a key (including the initial placement of the knight), it presses the number of that key, pressing N digits total. How many distinct numbers can you dial in this manner? Since the answer may be large, output the answer modulo 10^9 + 7 . Example 1: Input: 1 Output: 10 Example 2: Input: 2 Output: 20 Example 3: Input: 3 Output: 46 Note

C++_vector操作

一曲冷凌霜 提交于 2020-03-01 16:13:14
1. vector: 1.1 vector 说明 vector是向量类型,可以容纳许多类型的数据,因此也被称为容器 (可以理解为动态数组,是封装好了的类) 进行vector操作前应添加头文件#include 1.2 vector初始化: 方式1. //定义具有10个整型元素的向量(尖括号为元素类型名,它可以是任何合法的数据类型),不具有初值,其值不确定 vector < int > a ( 10 ) ; 方式2. //定义具有10个整型元素的向量,且给出的每个元素初值为1 vector < int > a ( 10 , 1 ) ; 方式3. //用向量b给向量a赋值,a的值完全等价于b的值 vector < int > a ( b ) ; 方式4. //将向量b中从0-2(共三个)的元素赋值给a,a的类型为int型 vector < int > a ( b . begin ( ) , b . begin + 3 ) ; 方式5. //从数组中获得初值 int b [ 7 ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 } ; vector < int > a ( b , b + 7 ) ; 1.3 vector对象的常用内置函数使用(举例说明) # include <vector> vector < int > a , b ; //b为向量,将b的0

c++vector动态数组应用及函数(笔记)

北城以北 提交于 2020-02-29 19:21:28
vector动态数组应用及函数 开始先碎碎念一下下 vector动态数组是c++中一个常用的容器 它相比于c语言中的数组 多了很多功能 方便了使用 由于接触c++以来 还一直保持着c语言风格的代码 确实有点大材小用 就把笔记总结一下 方便学习 加深记忆 vector头文件 使用vector 首先要添加vector 头文件 # include <vector> vector的创建(1) 可以创建各种类型的vector动态数组 :整形,浮点型,字符型,对象类,字符串型都可以 创建方法也是类似的 vector < int > ivec ; //保存int类型的动态数组 vector < string > svec ; // 保存string类型的动态数组 vector < char > cvec ; //保存char类型的动态数组 vector < double > dvec ; //保存double类型的动态数组 vector的创建(2) 当然 如此牛批 强大的vector 也可以在进行创建的同时 做到一些 牛批 的初始化工作 比如 vector < int > ivec ( 10 , 1 ) ; //初始化为存有10个1的动态数组 vector < string > svec ( 10 , "hi" ) ; //当然这就是 10个string类型的 hi vector < char

【C++容器和string类】vector、stack、queue、string

断了今生、忘了曾经 提交于 2020-02-29 10:39:11
目录 vector stack queue string vector 头文件: #include<vector> 1. 创建普通变量 vector<int> x(v[1]); //用v[1]初始化 vector<int> y=v[2]; //用v[2]初始化 vextor<string> sevc{"vb","vc"}; //字符串初始化 2. 指定数量的元素 vector<int> ivec(10,-1); //10个int元素,每个都初始化为-1,若不指定-1则均初始化为0; vector<string> svec(10,"hello") ; //均已“hello”初始化 3. 创建二维数组 vector<vector<ing>> arr(2,vector<int>(5)); //相当于二维数组a[2][5]; vector<int> V[10]; //表示10个容器 4. 迭代器,相当于指针 vector<int>::iterator it; //it读写vector<int>中的元素 string::iterator st; //读写string对象中的字符 vector<int>::const_iterator it2; //it2只能读元素,不能写元素 string::const_iterator it3; //it3只能读字符,不能写字符 使用方法eg: int a

STL源码剖析读书笔记-第4章

时光怂恿深爱的人放手 提交于 2020-02-29 03:05:36
第4章  序列式容器 容器是个大东西,还是带着问题分析好。 序列式容器里,我用的最多的还是vector。 1.我知道vector中有内存有预先分配,这种机制是好的,但有时候会浪费内存。 2.重点分析vector初始化大小,resize,erase等 vector容器 4.1.vector(n,v),使用这个构造函数可以指定含有n个v值的元素 看下源码: 构造函数 1 /** 2 * @brief Creates a %vector with copies of an exemplar element. 3 * @param n The number of elements to initially create. 4 * @param value An element to copy. 5 * @param a An allocator. 6 * 7 * This constructor fills the %vector with @a n copies of @a value. 8 */ 9 explicit 10 vector(size_type __n, const value_type& __value = value_type(), 11 const allocator_type& __a = allocator_type()) 12 : _Base(__n, __a)

C++字符串、向量和数组知识概要总结

China☆狼群 提交于 2020-02-28 22:26:07
字符串 记一下string的几种没用过的初始化操作,赋值不能这么搞 string s1("value"); string s2(s1); string s3(6,'z'); string s4=string(6,'a'); 上面没咋提拷贝初始化,带等号的都是拷贝初始化,这里都是直接初始化 getline(cin, line); 可接受句子,遇到换行符则停止, 并且换行符也会被读入,但是这个换行符又被丢弃了 while(getline(cin, line)){ cout << line << endl; } while(cin>>line){ cout << line << endl; } 从上述两个例子里可以看出getline确实读入了换行符而且确实又把它给丢弃了。 注意注意注意!! string.size()这个函数返回的值的类型并不是int,而是string::size_type类型的,并且非常值得注意的是这个类型他是无符号类型的,用这个直接带入一些式子中可能会有意想不到的结果的; 尤其要注意的是s.size()<n这样的结构。~!! 关于string大小的判断,比较第一对相异的字符大小即可,若没有相异的,谁长谁大,或者就是相等 可以用字符字面值和字符串字面值转换成string 当string对象和字符字面值以及字符串字面值混在一起使用是,必须确保加号两边至少一个是string

Java基础复习-----集合Vector

 ̄綄美尐妖づ 提交于 2020-02-28 21:04:41
Vector与ArrayList差不多,只不过Vector是线程安全,这也意味着性能会比ArraList差 1、定义 与ArrayList继承、实现接口都一样 2.内部使用数组对象进行存储 使用无参构造方法初始化时,数组大小默认为10 ;这一点与ArrayList不同,ArrayList使用无参构造方法初始化默认为空数组,大小为0; 3.扩容字段 capacityIncrement 正常情况下扩容机制为新的集合大小 = 原来的集合大小+capacityIncrement ,这个与ArrayList不同; ArrayList采用扩容机制为 新的集合大小 = 原来的集合大小+ 原来的集合大小/2 int newCapacity = oldCapacity + (oldCapacity >> 1); 4.部分方法 setSize() 改变Vector的集合大小,如果newSize大于Vector实际大小会进行Vector扩容,相反,会抛弃newSzie位置索引(包括newSize位置)之后的元素 Vector中大部分方法都如上使用synchronized关键字,进行线程同步,所以性能会比ArrayList差;因为ArrayList是非线程安全的;如果要使用线程安全的List,推荐使用 Collections.synchronizedList(list) ;

vector容器

核能气质少年 提交于 2020-02-28 13:51:02
参考 CSDN 顽强的土豆地雷 https://blog.csdn.net/fuxingdecsdn/article/details/80411649 CSDN kinghero123456 https://blog.csdn.net/u014378771/article/details/90295900 菜鸟教程 https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html 头文件 #include<vector> 定义 //第一种:不传参数 vector<int> vint; vector<char> vchar; vector<string> vstring; //第二种:传一个参数 相当于开辟了一个数组 vector<int> vint2(5); vector<char> vchar2(5); vector<string> vstring2(5); //第三种:参数一 n个元素,每个元素的初值 开辟数组并进行初始化 vector<int> vint3(5,0); vector<char> vchar3(5,'a'); vector<string> vstring3(5,"a"); //第四种:传一段迭代器区间 vector<int> vint4(vint3.begin(),vint3.end());