我觉得实验一下会记得比较牢,话不多直接上代码。

下面是array数组,感觉用的不多。

//cpp 风格数组 array
#include <iostream>
#include <array>
#include <vector> using namespace std; int main()
{
array<int , > myint = { , , , , , -};
for(int i = ; i < myint.size() ; i++) //size 获取长度,vector也是这样获取长度的
cout << myint[i] <<" " << (void *)&myint[i] << endl; array<int , > a1 = { , , , ,};
array<int , > a2 = { , - , - , - , -};
array <int , > a3 = {, , , , };
array<array<int , > , > a = {a1 , a2 , a3}; for(int i = ; i < a.size() ; i++)
{
for(int j = ; j < a[].size() ; j++)
cout << a[i][j] << " ";
cout << endl;
}
cout <<endl; for(auto i : a) //c++11语法
{
for(auto j : i)
cout << j << " ";
cout <<endl;
}
cout <<endl;
}

下面是vector数组,觉得挺强大的。

一些基本的操作函数也不过 push_back() 尾部插入, pop_back() 尾部删除, size() 获取大小, erase() 指定位置删除, clear() 清空, insert() 指定位置插入 , empty() 判断数组是否为空 为空返回true, front() 返回第一个元素的引用, back() 返回最后一个元素的引用, begin() 返回首元素的迭代器, end() 返回尾元素的迭代器。

#include <iostream>
#include <vector>
using namespace std; int main()
{
vector<double>db; //数组的大小可变 堆上的数组不一定是连续的
double m;
for(int i = ; i < ; i++)
{
cin >> m; //不能直接cin输入到db中 因为还没分配内存
db.push_back(m); //插入数据 自动变长
cout << db[i] << " " << (void*)&db[i] <<endl;
}
cout << db[] << " " << (void*)&db[] << endl << endl; cout << &db <<endl; //db不是指针 for(auto i : db) //这些i 和下面的ia ib ....都在栈上
{
cout << i << " " << (void *)&i << endl; //&i只能取首地址
} cout << endl << endl; auto ia = db.begin(); //开始
auto ib = db.end(); //结束
for( ; ia != ib ; ia++)
{
cout << *ia << " ";
}
cout <<endl; auto iia = db.rbegin(); //从尾部
auto iib = db.rend();
for( ; iia != iib ; iia++)
{
cout << *iia << " - ";
}
}
#include <iostream>
#include <vector> using namespace std; int main()
{
vector<int >a1 , a2;
vector<int >a3; a1.push_back(); a2.push_back();
a2.push_back();
a2.push_back(); a3.push_back();
a3.push_back(); vector<vector<int>> a = {a1 , a2 , a3};
for( auto i : a)
{
for(auto j : i)
cout << j << " ";
cout <<endl;
} //多个vector可以实现嵌套 实现锯齿多维数组 长度可以不确定
//多个array嵌套可以实现多维数组 但是长度必须等长 }
#include <iostream>
#include <vector> using namespace std; int main()
{
vector <string> str; str.push_back("WEL come!");
str.push_back("Hello");
str.push_back("World");
str.push_back("China");
str.pop_back(); //尾部删除一个
//str.clear(); //清空 for(auto ia = str.begin() ; ia != str.end() ; ia++)
{
if((*ia) == "Hello")
{
str.erase(ia); //删除之后begin会发生变化
// break;
}
cout << *ia << endl;
} str.erase(str.begin() + ); // 删除 cout << endl; for(auto i : str) // 两种遍历输出 下面是另一种
{
cout << i << " ";
}
cout << endl;
str.insert(str.begin() + , "HHHH"); //不能越界插入 可以在范围内插入 for(auto i : str) // 两种遍历输出 下面是另一种
{
cout << i << " ";
}
}

c++中的array数组和vector数组的更多相关文章

  1. 普通数组和json数组的区别

    PHP 数组 什么是数组? 数组是特殊的变量,它可以同时保存一个以上的值. 在 PHP 中创建数组 在 PHP 中, array() 函数用于创建数组 在 PHP 中,有三种数组类型: 索引数组 - ...

  2. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  3. 了解PHP中的Array数组和foreach

    1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组    . 2.例子:一般的数组 这里,我 ...

  4. JavaScript基础精华03(String对象,Array对象,循环遍历数组,JS中的Dictionary,Array的简化声明)

    String对象(*) length属性:获取字符串的字符个数.(无论中文字符还是英文字符都算1个字符.) charAt(index)方法:获取指定索引位置的字符.(索引从0开始) indexOf(‘ ...

  5. Java中对Array数组的常用操作

    目录: 声明数组: 初始化数组: 查看数组长度: 遍历数组: int数组转成string数组: 从array中创建arraylist: 数组中是否包含某一个值: 将数组转成set集合: 将数组转成li ...

  6. java 实现往oracle存储过程中传递array数组类型的参数

    注:本文来源于 <  java 实现往oracle存储过程中传递array数组类型的参数  >最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码 ...

  7. JavaScript中的内置对象-8--1.Array(数组)-Array构造函数; 数组的栈方法; 数组的转换方法; 数组的操作方法; 删除-插入-替换数组项; ECMAScript为数组实例添加的两个位置方法;

    JavaScript内置对象-1Array(数组) 学习目标 1.掌握任何创建数组 2.掌握数值元素的读和写 3.掌握数组的length属性 如何创建数组 创建数组的基本方式有两种: 1.使用Arra ...

  8. 观V8源码中的array.js,解析 Array.prototype.slice为什么能将类数组对象转为真正的数组?

    在官方的解释中,如[mdn] The slice() method returns a shallow copy of a portion of an array into a new array o ...

  9. Javascript中的Array(数组) 、{}(映射) 与JSON解析

    做网页总会使用javascript,使用javascript总会使用JSON.最近用到一下,就写写. 下面是总结: 1.将javascript中的Array和{}转化为json字符串可以使用json2 ...

随机推荐

  1. windows 勾子简介

    近段时间因朋友催促让试着写一个监控系统,主要是用来管理孩子使用电脑,帮助孩子合理使用电脑.在网上查询了相关内容发现没有这方面的资料,所以只有自已来试试,要用到钩子来对windows应用程序进行监控,也 ...

  2. const,readonly 常量与只读

    Const是常量 Const在编译时会被编译为静态成员,它确定于编译时期,属类型级,通过类型来访问. 现在通过以下几种情况来说明const常量: (1)初始化 public const string  ...

  3. xcode快捷键的使用

    1.统计Xcode项目代码行数 1   打开终端. 2  用ls和cd进到你项目的路径. 3   输入下面的指令: grep -r "\n" classes | wc -l (cl ...

  4. UVA 11419 SAM I AM(最大二分匹配&最小点覆盖:König定理)

    题意:在方格图上打小怪,每次可以清除一整行或一整列的小怪,问最少的步数是多少,又应该在哪些位置操作(对输出顺序没有要求). 分析:最小覆盖问题 这是一种在方格图上建立的模型:令S集表示“行”,T集表示 ...

  5. 理解ASP.NET MVC的路由系统

    引言 路由,正如其名,是决定消息经由何处被传递到何处的过程.也正如网络设备路由器Router一样,ASP.NET MVC框架处理请求URL的方式,同样依赖于一张预定义的路由表.以该路由表为转发依据,请 ...

  6. NPOI 2.0导出word(docx格式)

    大名鼎鼎的NPOI用来导出EXCEL的文章园子里面有很多,可是用来导出WORD文档的文章大都含糊不清,最近刚好完成一个导出WORD文档的需求,在此分享下. NPOI里面认为word文档的最基本的结构是 ...

  7. 【Sass初级】开始使用Sass和Compass

    转自:http://www.w3cplus.com/preprocessor/beginner/getting-started-with-sass-and-compass.html 如果你的朋友.同事 ...

  8. hdu 4643(计算几何)

    题意:容易理解 分析:切换的地点为两个基站所在直线的中垂线与两座城市所在直线的交点. 代码实现: #include <cstdio> #include <cmath> #inc ...

  9. Oracle自定义数据类型 2 (调用对象方法)

    调用对象方法 调用对象方法基于类型创建表后,就可以在查询中调用对象方法 A. 创建基于对象的表语法: create   table   <表名>   of   <对象类型>意义 ...

  10. 简单地Android中图片的三级缓存机制

    我们不能每次加载图片的时候都让用户从网络上下载,这样不仅浪费流量又会影响用户体验,所以Android中引入了图片的缓存这一操作机制. 原理: 首先根据图片的网络地址在网络上下载图片,将图片先缓存到内存 ...