浅谈模板类vector和array
来源:互联网 发布:ubuntu内核 编辑:程序博客网 时间:2024/05/29 20:01
在这里对模板类做非常非常简单的总结,以便于自己需要时有货可查1.
- 模板类vector
① 是一种动态数组,可在运行阶段设置vector对象的长度,也可以在末尾添加数据,在中间插入数据
② 使用new和delete来管理内存,但是是自动执行这两个操作的。
③ 必须#include<vector>
和包含在名称空间std中
④ 简单使用:vector<typeName> vb(n_elem);
上述声明创建一个名为vb的vector对象,它可储存n_elem个类型为typeName的元素。另,n_elem可以是常量或变量。 - 模板类array
① 长度固定的静态数组,使用栈(静态内存分配),其效率与数组相同,但更方便和安全。
② 与数组不同的是,可以将一个array对象赋予给另一个array对象,数组就要逐元素复制数据
③ 必须#include<array>
和包含在名称空间std中
④ 简单使用:array<typeName, n_elem> arr;
与创建vector对象不同的是,n_elem不能是变量。
需要注意的是,vector和array对象并不会捕获非法索引,而编译器也不会检查这种超界错误。
如arr[-2]=20;
信息会存储到数组的外面
对此,可以选择成员函数at()
,如:
arr.at(2)=2.3; //把2.3赋给arr[2]
在使用at()
时,会在程序运行期间捕获非法索引,而程序默认将中断。这种额外检查的代价是运行时间更长。
另外还有一些类成员函数begin()
和end()
能够确定边界,这日后再说……
- 函数与array对象
对于array类,调用函数时即可按值传递,亦可按地址传递或使用引用传递
看看在函数声明或定义中关于array类的形式该怎么敲,
例:
#include<iostream>#include<string>#include<array>const std::array<std::string, 4>Snames = { "Spring","Summer","Fall","Winter"}; //定义一个全局array对象int main() { //指出该函数接收的array对象的类型 void fill(std::array<std::duble_t, 4>*); void show(std::array<std::double_t, 4>); std::array<std::double_t, 4>expenses; fill(&expenses); std::cout << "EXPENSES\n"; show(expenses); system("pause"); return 0;}void fill(std::array<std::double_t, 4>*pa) { using namespace std; for (int i = 0; i < 4; i++) { cout << "Enter " << Snames[i] << " expenees:"; //关于array对象的指针的使用 cin >> (*pa)[i]; }}void show(std::array<std::double_t, 4>da) { using namespace std; for (int i = 0; i < 4; i++) { cout << Snames[i] << ": $" << da[i] << endl; }}//通过值(这里的show函数)传递,会造成比较大的内存开销,且效率低下//用指针直接处理原始对象,但代价是代码看起来更复杂//引用解决效率和表示法的问题
将在日后更新,讨论引用与array……
- 本文大部分知识来自 C++ Prime Plus,这里做的是总结归纳。 ↩
阅读全文
0 0
- 浅谈模板类vector和array
- 4.5 数组,模板类vector和array的比较
- C++——模板类vector和array
- vector和array类
- 模板类vector与Array(C++11)
- 数组、模板类vector对象、模板类array对象
- Array 和 Vector
- array vector 和string
- 浅谈static、类模板和函数模板
- C++ vector类模板和auto关键字
- 读书笔记之array和Vector
- ActionScript中的vector和array
- 浅谈java.util.Vector类的add()和addAll()方法
- 浅谈java.util.Vector类的add()和addAll()方法
- c++vector模板类
- c++vector模板类
- vector模板类
- 类模板vector入门
- BZOJ 4791: [CERC2016]Free Figurines 模拟
- 职场10大潜规则
- 如何解决跨域请求的问题
- ADB 过滤activity 关键字
- CODEVS--1201 最小数和最大数
- 浅谈模板类vector和array
- c++ 遍历文件夹函数
- <% %>,<%= %>与<%! %>的用途
- android 记录笔记
- Java注释、常用分隔符以及标识符命名规则
- Mac OS 安装Qt 编译时提示 running /usr/bin/xcodebuild
- ssh (安全外壳协议)
- OSX app (Mac app) crash 文件分析与定位
- NGUI_的Panel学习_003