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

下面是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. gcc g++ 参数介绍

    C和C++ 编译器是集成的.他们都要用四个步骤中的一个或多个处理输入文件: 预处理 (preprocessing),编译(compilation),汇编(assembly)和连接(linking).源 ...

  2. acdream 1683 村民的怪癖(KMP,经典变形)

    Problem Description 娜娜费劲九牛二虎之力终于把糖果吃完了(说好的吃不完呢?骗人,口亨~),于是,缘溪行,忘路之远近.忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷,娜娜甚异之 ...

  3. 【英语】Bingo口语笔记(51) - 相信怀疑的表达

  4. 使用sqlldr将文件中的数据导入到数据库

    1.创建数据文件: ?如,在D:\创建 zhaozhenlong.txt 文件,文件内容为: 11,12,1321,22,2331,32,33 2.创建控制文件: 如,在D:\创建 zhaozhenl ...

  5. xcode的ios工程目录结构

    目录结构: a.supporting files: main.m和资源文件 xxx-info.plist:包含应用程序相关属性列表,如版本,程序名等 .pch文件:预编译头文件,相当于MFC里的std ...

  6. in 和 exist 区别

    select * from Awhere id in(select id from B) 以上查询使用了in语句,in()只执行一次,它查出B表中的所有id字段并缓存起来.之后,检查A表的id是否与B ...

  7. WPF为提示信息文本增加闪烁效果

    程序通常需要显示某些提醒用户警示的信息,如:收件箱(40)其中数量闪烁就会起到警示效果.可以适用如下Storyboard实现: <ItemsControl.ItemTemplate> &l ...

  8. [转]Linux下which、whereis、locate、find 命令的区别

    转自:http://312788172.iteye.com/blog/730280 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索.这些是从网上找到的资料,因为有 ...

  9. CMDB属性及分类问题思考

    定义的烦恼 在某一次系统监控的讨论会议上,我随便提出了个问题:“如何定义一个系统?”,结果答案就五花八门起来了,会议也跑题了. 为什么问这个问题,是因为某些同事觉得某个系统比较大,就往下分为子系统.组 ...

  10. D.xml

    pre{ line-height:1; color:#1e1e1e; background-color:#f0f0f0; font-size:16px;}.sysFunc{color:#627cf6; ...