vector初始化

第三章 字符串、向量和数组

∥☆過路亽.° 提交于 2019-12-02 11:05:44
第三章 字符串、向量和数组 标准库类型 string 头文件: #include <string> string定义和初始化: string s1 ; string s1 ( s2 ) ; string s1 = "hello" ; //注意:与下一个语句等价,这里字面值“hello”的空字符并未保存到s1. string s1 ( "hello" ) ; string s1 ( n , 'c' ) ; string对象的操作: cin >> s1 ; cout << s1 ; geline ( cin , s1 ) ; s . empty ( ) ; s . size ( ) ; s [ n ] ; s1 + s2 ; s1 = s2 ; s1 == s2 ; s1 != s2 ; < > <= >= 注意事项: geline(cin, s); 和 cin>>s; 的区别: geline从输入流中读取,直至遇到换行符停止,换行符也被读取,但是s中并不保存换行符; 若第一个字符就读到换行符,则s为空 cin>>s 从第一个非空白字符开始,直至遇到第一个空白符结束 s.size()的返回值为 string::size_type 类型,是无符号数 定义该类型的变量可以直接使用: decltype(s.size()) i = 0; string 和 字符字面值 或 字符串字面值

STL与基础数据结构

二次信任 提交于 2019-12-02 06:59:26
内容参考书籍《算法竞赛入门到进阶》 1.vector。   数组是基本数据结构,有静态数组和动态数组,在比赛中如果空间足够,能用静态数组就用数组,在空间紧张的情况下可以使用STL的vector建立动态数组。   vector是STL的动态数组,在运行时能根据需要改变数组大小。vector容器是一个模板类,能存放任何类型的对象。 1 vector<int> a;//默认初始化,为空 2 vector<int> b(a);//用a定义b 3 vector<int> a(100);//a有100个值为0的元素 4 vector<int> a(100,6);//100个值为6的元素 5 vector<string> a(10,"null");//10个值为null的元素 6 vector<string> vec(10,"hello");//10个值为hello的元素 7 vector<string> b(a.begin(),a.end());//b是a的复制 8 struct point {int x,y;}; 9 vector<point>a;//a用来存坐标(或者向量???或者其他东西?) View Code   当然还可以定义多维数组,例如vector<int>a[MAXN];它的一维是固定的MAXN,二维是动态的。用这种方式可以实现图的邻接表的存储。   vector常用操作:

C++vector的使用总结及常用vector操作

落花浮王杯 提交于 2019-12-02 04:59:20
一、C++ vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分,使用时需包含头文件: #include <vector> 二、C++ vector类有两种使用方式: 第一种:STL方式 vector< string > text; 1. 我们向 vector 中插入元素,而不再是索引元素,以及向元素赋值,例如 push_back()操作,就是在 vector 的后面插入一个元素下面的 while 循环从标准输入读入一个字符串序列并每次将一个字符串插入到 vector 中 string word; while ( cin >> word ) { text.push_back( word ); // … } 虽然我们仍可以用下标操作符来迭代访问元素 cout << “words read are: \n”; for ( int ix = 0; ix < text.size(); ++ix ) cout << text[ ix ] << ’ ‘; cout << endl; 但是 更典型的做法是使用vector 操作集中的begin()和 end()所返回的迭代器 iterator 对 : cout << “words read are: \n”; for ( vector<string>::iterator it =

c++ vector容器

回眸只為那壹抹淺笑 提交于 2019-12-02 04:56:11
转 http://www.cnblogs.com/Nonono-nw/p/3462183.html # include <vector> 一、vector 的初始化 vector < int > a ( 10 ) ; //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。 vector < int > a ( 10 , 1 ) ; //定义了10个整型元素的向量,且给出每个元素的初值为1 vector < int > a ( b ) ; //用b向量来创建a向量,整体复制性赋值 vector < int > a ( b . begin ( ) , b . begin + 3 ) ; //定义了a值为b中第0个到第2个(共3个)元素 int b [ 7 ] = { 1 , 2 , 3 , 4 , 5 , 9 , 8 } ; vector < int > a ( b , b + 7 ) ; //从数组中获得初值 二vector对象的几个重要操作 ( 1 )a . assign ( b . begin ( ) , b . begin ( ) + 3 ) ; //b为向量,将b的0~2个元素构成的向量赋给a ( 2 )a . assign ( 4 , 2 ) ; //是a只含4个元素,且每个元素为2 ( 3 )a . back

C++ vector 容器使用

依然范特西╮ 提交于 2019-12-02 04:55:22
C++ vector 容器使用 vector 作用在此不做解释了 使用需要引入头文件 #include <vector> 自带函数如下 1. push_back 在容器的最后添加一个数据 2. pop_back 去掉容器的最后一个数据 3. at 得到下标位置的数据 4. begin 得到容器第一个数据的指针 5. end 得到容器最后一个数据下一个的指针 6. front 得到容器第一个数据的引用 7. back 得到容器最后一个数据的引用 8. max_size 得到容器最大可以存放数据个数 9. capacity 当前vector分配的空间可以存储数据个数 10. size 当前存储的数据个数 11. resize 改变容器可以存储数据个数 12. reserve 改变容器分配空间的大小 13. erase 删除指针指向的数据项 14. clear 清空当前的vector 15. rbegin 返回容器数据反转后的开始指针(原来的 end - 1 ) 16. rend 返回容器反转后结束指针(原来的begin - 1 ) 17. empty 判断容器是否为空 18. swap 与另一个容器交换数据 // vector 运用实例如下 // Pro1.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <vector>

C++中Vector使用方法

僤鯓⒐⒋嵵緔 提交于 2019-12-02 04:54:53
一直对容器不是很了解,网上看到一篇文章感觉还不错,留下来做个笔记。 转至: http://blog.chinaunix.net/uid-26000296-id-3785610.html 1. 在C++中的详细说明 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。 vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象, 简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 2. 使用vector, 必须在你的头文件中包含下面的代码: #include vector属于std命名域的,因此需要通过命名限定,如下完成你的代码:   using std::vector;   vector vInts;    或者连在一起,使用全名: std::vector vInts;    建议使用全局的命名域方式: using namespace std; 3. 初始化 vector // 创建一个空的vector。 vector c1(c2) // 复制一个vector vector c(n) // 创建一个vector,含有n个数据,数据均已缺省构造产生 vector c(n, elem) // 创建一个含有n个elem拷贝的vector vector c(beg,end) //

C++ Vector容器

亡梦爱人 提交于 2019-12-02 04:54:43
//Vector 是一种类模板,能够存储类型相同的对象,每个对象有个与之对应的索引。 //模板:可以看作是编译器生成类或函数编写的一份说明,编译器根据模板创建或函数的过程称为实例化,模板需要指出其类型。模板<类型> 模板变量; //模板不能生成为引用,因为引用不是对象,Vector可以嵌套使用。 //C++11之前的容器定义为:vector<vector<int> >,现在为vector<vector<int>> //容器初始化:vector<T> v1 "一个空vector" // vector<T> v2(v1) / vector<T> v2 = v1 / vector<T> v2 = v1 / vector<T> v3(n,val) / vector<T> v4(n) / vector<T> v5{a,b,a...} / vector<T> v5 = {a,b,c,...} // 对于vector<T> v4(n) 省略初始值,库会根据vector中元素的类型给容器中的所有元素赋一个初始值(但有些类必须要进行初始化) //通过花括号和圆括号区分初始的是元素的数量还是元素值 //如果提供的是花括号,但是其中的值不能用来列表初始化,那么就应该是用来构造vector对象。eg:vector<string> vec{10};//10个默认的初始化元素 //vector 添加元素

从0开始学算法--数学(4.1矩阵)

为君一笑 提交于 2019-12-02 03:02:46
1,概念 以下词条解释来自百度百科:代数,代数系统,线性代数,矩阵 代数   代数是研究数、数量、关系、结构与代数方程(组)的通用解法及其性质的数学分支。 初等代数 一般在中学时讲授,介绍代数的基本思想:研究当我们对数字作加法或乘法时会发生什么,以及了解变量的概念和如何建立 多项式 并找出它们的根。代数的研究对象不仅是数字,而是各种抽象化的结构。在其中我们只关心各种关系及其性质,而对于“数本身是什么”这样的问题并不关心。常见的代数结构类型有群、 环 、域、模、 线性空间 等。 代数系统   非空集合A和A上k个一元或二元运算f1,f2,…,fk组成的系统称为一个代数系统,简称代数,记作(A,f1,f2,…,fk)。由定义可知,一个代数系统需要满足下面3个条件:(1)有一个非空集合A;(2)有一些建立在集合A上的运算;(3)这些运算在集合A上是封闭的。有的书上对代数系统定义时不要求运算的封闭性,而是把具有封闭性的代数系统定义为一个新的概念- 广群 。 线性代数   线性代数是数学的一个分支,它的研究对象是 向量 , 向量空间 (或称线性空间), 线性变换 和有限维的 线性方程组 。向量空间是 现代数学 的一个重要课题;因而,线性代数被广泛地应用于 抽象代数 和 泛函分析 中;通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。由于科学研究中的 非 线性模型

STL源码剖析——序列式容器#1 Vector

本秂侑毒 提交于 2019-12-01 23:19:13
  在学完了Allocator、Iterator和Traits编程之后,我们终于可以进入STL的容器内部一探究竟了。STL的容器分为序列式容器和关联式容器,何为序列式容器呢?就是容器内的元素是可序的,但未必有序。C++本身就提供了一种序列式容器array(即数组),而STL就提供了多种序列式容器,这些容器都是基于常见的数据建构开发出来的,例如vector、list、deque等等。接下来我们将会对STL里的所有序列式容器进行逐一的学习。   本节要学的容器就是我们日常开发中使用最多的vector,vector的数据安排以及操作方式,与array非常相似。两者唯一的区别在于空间运用的灵活性。array是静态空间,配置了其大小就不能被改变,如果空间满了,要换大的,这只能自己手动来:配置新空间,将元素从旧址一一复制过去,再把原来的空间释放。而vector是动态空间,随着元素的加入,它内部会自行扩充空间,进行元素的复制并释放旧空间。所以在使用上,我们更趋向于使用vector而非array,因为不用考虑元素个数的问题,很适合动态元素个数的情况。我们不必因为害怕空间不足而一开始就要求一个大块头的array了。   我们先从vector类里的public部分出发,因为这部分是我们在使用vector时经常接触到的一些接口,从这些接口开始逐渐深挖,探究其里面的运作机制

vector的用法

荒凉一梦 提交于 2019-12-01 20:17:26
vector相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时, 用其来解决问题可以达到最大节约空间的目的. 就是常数很大,但要是开了O2,一切都不是问题。 就像数组一样,vector也采用的连续存储空间来存储元素。 也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。 但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。 但是对于编程来讲,我们只会用就可以了。 NEXT,用法奉上。 1.vector的元素不仅仅可以是int,double,string,还可以是结构体,但是要注意:结构体要定义为全局的,否则会出错。 2.当然,要有头文件#include<vector> 3.我们以vector<int>a;为例 基本上包含了vector的常用函数(不够再补) 1 #include<bits/stdc++.h> 2 #define ll long long 3 #define DB double 4 using namespace std; 5 const int tmp=100; 6 vector<int>a;//创建vector对象 7 vector<int>b(6,9); 8 /*vector的声明及初始化 9 vector<int> a; //声明一个int型向量 10 vector<int> a(5); /