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

下面是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. USACO全部测试数据

    链接:http://share.weiyun.com/8c37d26066ee9e63147d2af983f24290 密码:YyGL 请使用2345好压解压.

  2. (转载)DataTable使用技巧总结

    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结.         一.Da ...

  3. linux shared lib 使用与编译

    一.              动态链接库的原理及使用 Linux提供4个库函数.一个头文件dlfcn.h以及两个共享库(静态库libdl.a和动态库libdl.so)支持动态链接. Ø        ...

  4. BZOJ 1724 切割木板

    合并果子. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm& ...

  5. WWDC 2015 - 概记

    WWDC 2015已经过去快一个月了,今年似乎没有像去年那样变化巨大,一切都在慢慢演进,iOS.Mac OS.watchOS都变得越来越好. 新的三大平台的发布,iOS 9/Mac OS EL Cap ...

  6. Windows Azure移动终端云服务管理(公测版)

    概览 云在远方,管理在您手中.在这个移动为先 云为先的世界,服务不再是基于请求才提供,而是主动来到身边方便您的模式了.我们最近将会陆续推出几大移动端利器帮助您随时随地管理您的云服务. 首批利器之中排名 ...

  7. 【英语】Bingo口语笔记(45) - Pass系列

  8. SOAP+WSDL

    一 SOAPSOAP最开始是用作RPC机制的,后来XML的出现使其应用非常广泛.它与HTTP一样是一种应用级协议,使用他可以在不同的应用程序之间进行数据交换.SOAP可以基于HTTP,也可以基于HTT ...

  9. sysbench 安装

    sysbench源代码可以在https://launchpad.net/sysbench找到.也可以从本文件附件中下载. 先安装好mysql,记录下安装目录.默认为 /usr/local/mysql ...

  10. MVC-READ5(asp.net web from PK asp.net MVC)

    webform: ViewState问题 页面生命周期 不能很好的分解关注点 对HTML操控受限 抽象不完全 可测试性弱