C++向量和数组的比较

转:http://blog.chinaunix.net/uid-20653907-id-1590720.html

vector(向量)是c++STL(标准模板类库)的重要一员,使用时,要包含头文件vector即可。

  • 数组无法整体复制

int a[10] = {0};
int b[10] = a; //错

vector<int> c(10);
vector<int> d = c; //正确

除此之外,向量还有好多种定义方式,还可以从数组中获得初值,例如


int a[3] = {1, 2, 3};
vector<int> va(a, a+3);

  • 数组无法动态定做,或者要做额外的善后工作

int n;
cin>>n;
int a[n]; //不正确,数组大小不确定

若采用动态定做,从而需要释放空间


int n;
cin>>n;
int* ap = new int[n];
// 一系列数据处理
delete[] ap;

如果换成向量,则一目了然


int n;
cin>>n;
vector<int> va(n);

  • 数组无法扩容

vectot<int> va;

//无法想象对应的数组操作
for (int a; cin>>a; va.push_bach(a));

向量还有好多常用的操作,这些操作是数组所不具备,但同时向量又可以像数组一样被使用,例如:


vector<int> a;
a.push_bach(5); //在a向量最后位置插入一个元素
a.pop_back(); //删除a向量的最后一个元素
a.clear(); //清空a向量中的元素
int x = a.front(); //将a向量的第一个元素赋给x
int y = a.back(); //将a向量的最后一个元素赋给y
bool b = a.empty(); //判断是否为空
a.resize(10); //将元素个数调至10个,多则删,少则补

//等等

其中a.begin(),b.end()分别表示向量a的起始元素位置和最后一个元素之外的元素位置.

输出向量中的元素可以如下:


for (int i = 0; i < a.size(); ++i)
    cout<<a[]<<" ";

还有一个比较有用的是对向量中的元素进行排序:


sort(a.begin(), a.end()); //从小到大排序

时间: 2024-12-27 14:36:08

C++向量和数组的比较的相关文章

《C++primer》v5 第3章 字符串、向量和数组 读书笔记 习题答案

3.1略 3.2 string str; //读行 while(getline(cin,str)) cout<<str<<endl; //读单个词 while(cin>>str) cout<<str<<endl; 3.3 输入运算符读到空白符结束 getline读到换行符结束,并丢弃换行符 3.4 比较大小. 比较大小是比较的第一个不相同的字符的大小. int main() { string a,b; cin>>a>>b;

C++ Primer学习总结 第3章 字符串,向量和数组

第3章 字符串,向量和数组 1.    如何用string读取一整行内容? 用getline(cin,s)即可. 当然getline()也可以用来作为while循环读取输入的判断条件. 2.    string与字符串字面值,字符字面值相加 由于+法是从左向右运算的,所以只要保证每次两个值相加时,+号左右两边至少有一个是string就行. 3.    string不仅可以与字符串字面值相加,还可以与以'\0'字符结束的字符串数组相加. 4.    注意下面数组的初值: 如果a与b数组都是全局的话

chapter 3 字符串,向量和数组

类型是C++编程的基础,类型规定了对象的存储要求以及所能执行的操作,C++提供了一套基础内置类型,类型分为常量以及非常量,一个常量对象必须初始化,一旦初始化就不能再改变.此外可以重复定义复合变量.复合类型以其他的类型为基础. 编写自己的头文件: 类一般不定义在函数体内,在函数体外部使用类的时候,在各个指定的源文件中只有一处为类的定义,并且在不同文件中使用同一个类,类的定义必须保持一致. 类通常定义在头文件中,类所在头文件的名字应该和类的名字一样. 3.1 命名空间以及using声明 目前为止,用

C++primer笔记2:变量和基本类型、字符串,向量和数组、表达式、类

第2章:变量和基本类型 char 8位 bool 未定义 short 短整型16 int 整型16 long 长整型32 long long 长整型64 C++11新定义的 float: 1个字 32位 6位有效位 double: 2个字 64位 10位有效位 long double: 10位有效位 带符号和不带符号的 unsigned 不带符号 仅仅表示大于0的 signed 带符号 大于,小于,0 基本字符集 :比特位 可寻址的最小内存块:字节 8比特 存储的基本单位 :字 32或64比特

&lt;&lt;C++ Primer&gt;&gt; 第三章 字符串, 向量和数组 术语表

术语表 第 3 章 字符串, 向量和数组 begin: 是 string 和 vector 的成员,返回指向第一个元素的迭代器.也是一个标准库函数,输入一个数字,返回指向该数字首元素的指针. ?? 缓冲区溢出(buffer overflow): 一种严重的程序故障,主要的原因是试图通过一个越界的索引访问容器内容,容器类型包括 string,vector 和 数组等. ?? C 风格字符串(C-style string): 以空字符结束的字符数组.字符串字面值是 C 风格字符串,C风格字符串容易出

Chapter3:字符串、向量和数组

C++11新特性:范围for(range for) 1 for (declaration: expression) 2 statement vector和数组都是对象的集合,而引用不是对象. vector对象可以高效地增长,在定义vector对象的时候设定其大小也就没什么必要了,事实上如果这么做性能可能更差. C++11新特性:cbegin() & cend() 为了便于专门得到const_iterator类型的返回值,C++11新标准引入了两个新函数,分别是cbegin() 和cend().

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

一.string 1.包含头文件string: 命名空间std #include<string> using std::string 2.读取操作时,string对象会自动忽略开头的空白,直到遇到下一个空白 如果想要保留空白,使用getline函数:读到换行符为止,但不把换行符写入到string中 string s1, s2, s3; cin >> s1 >> s2; //输入" hello world " cout << s1 <

c++核心-字符串、向量和数组及指针详解

关于STL的内容后面再详细介绍,string和vector都是标准模板库的内容. 数组是C的复合类型(可能只有我这么叫),一组数据,空间连续,所以由开始也有结束,从0开始,到n-1结束.注意别越界,因为是从0开始的. string和vector内部的保存数据的空间也是一个数组,所以空间也是连续的,可以看做数组的封装,同时提供了很多便利的操作,因为便利,所以也会一定程度减少自己犯错误的机会. 空间连续所以可以通过下标(随机,所谓随机,就是可以直接访问,不需要从头一个一个找下来才能找到)访问.因为跟

练笔--字符串,向量和数组1

编写一段程序,从标准输入中一次读入一行,然后修改程序使其一次输入一个词. 首先一次输入一行 1 #include <iostream> 2 #include<string> 3 using namespace std; 4 int main() 5 { 6 string line; 7 cout<<"请输入字符串,可以包含空格"<<endl; 8 while(getline(cin,line)) 9 { 10 cout<<li