1. 使用C++风格的数组。不须要管理内存。

  2. array要注意不要溢出,由于它是栈上开辟内存.

  3. array适用于不论什么类型

#include<iostream>

#include<array>

#include<vector>  
//C++的标准库

#include<string>  
//C++字符串

#include
<stdlib.h>

using 
std::array;
//静态数组,栈上

using
std::vector;
//动态数组,堆上

using
std::string;

//使用C++风格数组不须要管理内存。

//array注意不要栈溢出

//array适用于不论什么类型

void
main()

{

array<int,
5> myint1 = { 1, 2, 3, 4, 5 };

array<int,
5> myint2 = { 11, 12, 13, 14, 15 };

array<int,
5> myint3 = { 21, 22, 23, 24, 25 };

// 
array<array<int,5>, 3> myint = {myint1,myint2,myint3};

array<array<int,
5>, 3> myint = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15 };

for (int
i = 0;
i <
myint.size();
i++)//数组大小

{

for (int
j = 0;
j <
myint1.size();
j++)

{

std::cout
<< " 
" <<
myint[i][j];

}

std::cout
<< "\n";

}

std::cin.get();

}

  1. vector:动态字符串数组

#include<iostream>

#include<array>

#include<vector>//C++的标准库

#include<string>//C++字符串

#include
<stdlib.h>

using 
std::array;//静态数组,栈上,

using
std::vector;//动态数组,堆上,

using
std::string;

//使用C++风格数组不须要管理内存。

//array注意不要栈溢出

//array适用于不论什么类型

void
main()

{

vector <string> 
string1;//动态字符串数组

//能够重复利用

string1.push_back("notepad");

string1.push_back("calc");

string1.push_back("mspaint");

string1.pop_back();//删除一个

//string1.clear();//清空

for (int
i = 0;
i <
string1.size();
i++)//遍历动态数组

{

system(string1[i].c_str());

}

system("pause");

}

5.通过iteratorkeyword进行过迭代

#include<iostream>

#include<array>

#include<vector>  
//C++的标准库

#include<string>  
//C++字符串

#include
<stdlib.h>

using 
std::array;
//静态数组,栈上

using
std::vector;
//动态数组。堆上

using
std::string;

void
main()

{

vector <string> 
string1;//动态字符串数组

string1.push_back("notepad");

string1.push_back("calc");

string1.push_back("mspaint");

vector<string>::iterator
ibegin,
iend;//迭代器

ibegin =
string1.begin(); 
//数据起始点

iend =
string1.end();     
//结束

for (;ibegin
!= iend;ibegin++)

{

string
tempstr = *ibegin;  
//获取指针指向的数据

system(tempstr.c_str());   
//运行指令

}

system("pauese");

}

6.正逆向迭代数组

#include<iostream>

#include<array>

#include<vector>  
//C++的标准库

#include<string>  
//C++字符串

#include
<stdlib.h>

using 
std::array;
//静态数组。栈上

using
std::vector;
//动态数组,堆上

using
std::string;

void
main()

{

array<int,
5> myint = { 1, 2, 3, 4, 5 };

array<int,
5>::iterator
ibegin,
iend;//正向迭代器

ibegin =
myint.begin();

iend =
myint.end();

while (ibegin
!= iend)

{

std::cout
<< *ibegin <<
std::endl;

ibegin++;

}

std::cout
<< "----------" <<
std::endl;

array<int,
5>::reverse_iterator
rbegin,
rend;

rbegin =
myint.rbegin();

rend =
myint.rend();

while (rbegin
!= rend)

{

std::cout
<< *rbegin <<
std::endl;

rbegin++;

}

std::cin.get();

}

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

7.反向迭代器

#include<iostream>

#include<array>

#include<vector>  
//C++的标准库

#include<string>  
//C++字符串

#include
<stdlib.h>

using 
std::array;
//静态数组。栈上

using
std::vector;
//动态数组,堆上

using
std::string;

void
main()

{

vector<string>
string1;
//动态字符串数组

string1.push_back("notepad");

string1.push_back("calc");

string1.push_back("mspaint");

//反向迭代器

vector<string>::reverse_iterator
rbegin =
string1.rbegin();

vector<string>::reverse_iterator
rend =
string1.rend();

//rend最后不指向数据,指向数据的结尾的下一个节点

//当使用以下的方法时,仅仅打印了记事本,计算器

rend--;

A:if
(rbegin !=
rend)

{

system((*rend).c_str()); 
//运行指令

//rbegin++;

rend--;

goto
A;

}

}

8.lambda表达式,不只适用与array,也适用于vector

#include<iostream>

#include
<vector>

#include
<algorithm> 
//算法 lambda表达式。不只适用于array,也适用于vector

void
main()

{

std::vector<int>
myvector;

myvector.push_back(11);

myvector.push_back(22);

myvector.push_back(33);

myvector.push_back(3);

myvector.push_back(4);

myvector.push_back(5);

int
res = 0; 
//结果

//&res直接操作一个变量。res等价于返回值,x代表參数,

//每次充当迭代器指向的元素,大括号就是代码

std::for_each(myvector.begin(),
myvector.end(),
[&res](int
x){res
+= x; });

std::cout
<< res;

std::cin.get();

}

执行结果是:

9.vector的增删改查

#include<iostream>

#include
<vector>

#include
<algorithm> 
//算法 lambda表达式。不只适用于array,也适用于vector

void
main()

{

//分配5个空间,默认初始化为0

std::vector<int>
myvector(5);

myvector.push_back(1);

myvector.push_back(11);

myvector.push_back(111);

myvector.push_back(1111);

myvector.push_back(2);

//弹出一个元素,删除最后一个

myvector.pop_back();

//插入

myvector.insert(myvector.begin()
+ 1,999);

//依据迭代器的位置

myvector.erase(myvector.begin()
+ 5);

//myvector.clear(); //删除全部元素

for (int
i = 0;
i <
myvector.size();i++)

{

if (1)

{

//查询,改动

}

std::cout
<< myvector.at(i)
<< std::endl;

}

system("pause");

}

10.vector中的元素也是vector

#include<iostream>

#include
<vector>

#include
<algorithm> 
//算法 lambda表达式,不只适用于array,也适用于vector

void
main()

{

//能够实现动态无规则数组管理

std::vector<int>
myvector1;

myvector1.push_back(12);

myvector1.push_back(13);

myvector1.push_back(14);

std::vector<int>
myvector2;

myvector2.push_back(22);

std::vector<int>
myvector3;

myvector3.push_back(32);

myvector3.push_back(37);

std::vector<std::vector<int>>
allvecor;

allvecor.push_back(myvector1);

allvecor.push_back(myvector2);

allvecor.push_back(myvector3);

for (int
i = 0;
i <
allvecor.size();i++)

{

for (int
j = 0;
j <
allvecor[i].size();j++)

{

std::cout
<< " 
" <<
allvecor[i][j];

}

std::cout
<< "\n";

}

std::cin.get();

}

11.C++中的数组能够直接赋值

#include
<iostream>

#include
<array>

#include
<string>

#include
<stdlib.h>

void
main()

{

double
db[4] = { 1.1, 2.2, 3.3, 4.4 };

//std::array数据类型,double元素类型,4个数

std::array<double,
4> dbnew1 = { 10.1, 10.2, 10.3, 10.4 };

//能够实现数组之间总体操作

std::array<double,
4> dbnew2 =
dbnew1;

for (int
i = 0;
i < 4;
i++)

{

std::cout
<< db[i]
<< "  
" <<
dbnew1[i]
<< "   
" <<
dbnew2[i]
<< std::endl;

}

std::cin.get();

}

执行结果:

12.array的字符串

#include
<iostream>

#include<array>

#include<string>

#include<stdlib.h>

void
main()

{

std::array<std::string,
5> string1 = {
"calc",
"notepad",
"tasklist",
"mspaint",
"write" };

for (int
i = 0;
i < 5;
i++)

{

std::cout
<< string1[i]
<< std::endl;

system(string1[i].c_str());

}

std::cin.get();

}

12.C++能够加操作

#include
<iostream>

#include<array>

#include<string>

#include<stdlib.h>

void
main()

{

std::string
str1 =
"task";

std::string
str2 =
"list";

std::string
str3 =
str1 +
str2;

system(str3.c_str());

std::cin.get();

}

13.new的高级,缓冲区

#include<iostream>

#include<new>

const
int
buf(512);//限定一个常量整数512

int
N(5);//数组的长度

char
buffer[buf]
= { 0 };//静态区

//p1,p3,p5作为指针变量在栈区,存储的地址指向堆区

//手动释放内存

//p2,p4,p6作为指针变量在栈区,存储的地址在静态区。缓冲区。

//自己主动释放内存,用于分配用完了就不会再用的数据

//避免内存泄漏,自己主动释放内存。牺牲了内存訪问独立性。

using
namespace
std;

void
main()

{

double *p1,
*p2;

std::cout
<< "\n\n\n";

p1 =
new
double[N];//分配内存,N个元素的大小

p2 =
new (buffer)double[N];//指定区域分配内存

for (int
i = 0;
i <
N;
i++)

{

p1[i]
= p2[i]
= i + 10.8;//对于数组初始化

std::cout
<< "p1===  
" << &p1[i]
<< " 
" <<
p1[i];

std::cout
<< "  
p2===  "<< &p2[i]
<< " 
" <<
p2[i]
<< std::endl;

}

double *p3,
*p4;

std::cout
<< "\n\n\n";

p3 =
new
double[N];//分配内存,N个元素的大小

p4 =
new (buffer)double[N];//指定区域分配内存

for (int
i = 0;
i <
N;
i++)

{

p3[i]
= p4[i]
= i + 10.8;//对于数组初始化

std::cout
<< "p3===  
" << &p3[i]
<< " 
" <<
p3[i];

std::cout
<< "  
p4===  "<< &p4[i]
<< " 
" <<
p4[i]
<< std::endl;

}

double *p5,
*p6;

std::cout
<< "\n\n\n";

p5 =
new
double[N];//分配内存。N个元素的大小

p6 =
new (buffer)double[N];//指定区域分配内存

for (int
i = 0;
i <
N;
i++)

{

p6[i]
= p5[i]
= i + 10.8;//对于数组初始化

std::cout
<< "p5===  
" << &p5[i]
<< " 
" <<
p5[i];

std::cout
<< "  
p6===  "<< &p6[i]
<< " 
" <<
p6[i]
<< std::endl;

}

std::cin.get();

}

14.多元数组

#include
<iostream>

#include
<map>

//void在參数内部意味着參数为空,不写也意味着为空

void
main(void)

{

int
int1 = 10;

double
double1 = 99.8;

char
ch =
'A';

char *str
= "hellochina";

std::tuple<int,
double,
char,
const
char *>
mytuple(int1,
double1,
ch,
str);

const
int
num = 3;

auto
data0 =
std::get<0>(mytuple);

auto
data1 =
std::get<1>(mytuple);

auto
data2 =
std::get<2>(mytuple);

auto
data3 =
std::get<num>(mytuple);//下标仅仅能是常量

std::cout
<< typeid(data3).name()
<< std::endl;

decltype(data0)
dataA;  
//获取数据类型再次创建

//mytuple.swap(mytuple); array 
vector都有交换的功能

std::cout
<< data0 <<

" <<
data1 <<

" <<
data2 <<
"  
" <<
data3 <<
std::endl;

std::cin.get();

}

//tuple必须是一个静态数组

//配合vector,array

C++中的数组array和vector,lambda表达式,C字符串加操作,C++中新类型数组(数组缓存),多元数组,new缓冲的更多相关文章

  1. C#中委托、匿名函数、Lambda表达式的一些个人理解

    0x01定义一个委托,相当于定义一个可以存储方法的特殊变量类型 下面我们看具体的代码,通过代码更好理解 delegate void IntMethodInvoker(int x); 这行代码就是声明一 ...

  2. C++ 数组array与vector的比较

    转:http://blog.csdn.net/yukin_xue/article/details/7391897 1. array 定义的时候必须定义数组的元素个数;而vector 不需要: 且只能包 ...

  3. JAVA8之lambda表达式具体解释,及stream中的lambda使用

    前言: 本人也是学习lambda不久,可能有些地方描写叙述有误,还请大家谅解及指正! lambda表达式具体解释 一.问题 1.什么是lambda表达式? 2.lambda表达式用来干什么的? 3.l ...

  4. 写的非常好的文章 C#中的委托,匿名方法和Lambda表达式

    简介 在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我想下面的代码能证实这点.下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=5.答案是6个Fir ...

  5. Jsp中使用EL表达式对字符串进行操作

    用fn函数:<%@ taglib prefix="fn" uri="http://Java.sun.com/jsp/jstl/functions" %&g ...

  6. 使用ES6新数组方法(象C# Lambda表达式一样写查询语句)

    let people = [ {id: 1, name: "a", age: 12}, {id: 2, name: "b", age: 13}, {id: 3, ...

  7. JAVA8之lambda表达式详解,及stream中的lambda使用

    分享文章:https://blog.csdn.net/jinzhencs/article/details/50748202

  8. scala lambda 表达式 & spark RDD函数操作

    形式:(参数)=> 表达式  [ 一种匿名函数 ] 例1:map(x => x._2) 解:x=输入参数,“=>” 右边是表达式(处理参数): x._2 : x变为(**,x,**. ...

  9. C#复习笔记(4)--C#3:革新写代码的方式(Lambda表达式和表达式树)

    Lambda表达式和表达式树 先放一张委托转换的进化图 看一看到lambda简化了委托的使用. lambda可以隐式的转换成委托或者表达式树.转换成委托的话如下面的代码: Func<string ...

随机推荐

  1. mysql 慢查询日志 mysqldumpslow 工具

    文章来源:https://www.cnblogs.com/hello-tl/p/9229676.html 1.使用Mysql慢查询日志配置 查看慢查询日志是否开启 OFF关闭 ON开启 show va ...

  2. Python模块(一)(常用模块)

    1. 简单了解模块 写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块 buildins 内置模块. print, input random 主要是和随机相关的内容 random()    ...

  3. 流编辑器sed知识点总结

    sed(流文本编辑器)     每次读取一行到模式空间中,     修改的sed模式空间中的内容,并不会修改源文件,     继而输出模式空间的内容,     最后删除模式空间中的内容. sed [O ...

  4. 【php学习之路】微信公众帐号

          上个月开始学习php,算上中间放假的时间差不多有一个月了.这段时间呢,每天上班没事的时候不慌不忙的看下php,刚开始也只是看下php中文手册,看完一遍好像没什么感觉.于是就想啊,做个什么东 ...

  5. Linux快捷键列表

    Linux快捷键列表 快捷键 功能描述 快捷键 功能描述 control+p 查询命令历史纪录的上一条命令 方向上键 查询命令历史纪录的上一条命令 control+n 查询命令历史纪录的下一条命令 方 ...

  6. Visual Studio 2013 滚动条实现代码缩略图

    启动Visual studio 2013,打开工具->选项   在搜索选项输入,滚动条,英文版大概输入Scroll bar or Scroll 或者:文本编辑器->所有语言->滚动条 ...

  7. HDU-4848 Wow! Such Conquering! 爆搜+剪枝

    Wow! Such Conquering! 题意:一个n*n的数字格,Txy表示x到y的时间.最后一行n-1个数字代表分别到2-n的最晚时间,自己在1号点,求到达这些点的时间和的最少值,如果没有满足情 ...

  8. Unity3D for iOS初级教程:Part 1/3

    转自Unity 3d for ios 这篇文章还可以在这里找到 英语 Learn how to use Unity to make a simple 3D iOS game! 这篇教材是来自教程团队成 ...

  9. 常州模拟赛d2t2 小X的密室

    题目描述 密室中有 N 个房间,初始时,小 X 在 1 号房间,而出口在 N 号房间. 密室的每一个房间中可能有着一些钥匙和一些传送门,一个传送门会 单向地 创造一条从房间 X 到房间 Y 的通道.另 ...

  10. Vmware error:无法获得 VMCI 驱动程序的版本: 句柄无效。

    error:无法获得 VMCI 驱动程序的版本: 句柄无效.驱动程序“vmci.sys”的版本不正确.请尝试重新安装 VMware Workstation.开启模块 DevicePowerOn 的操作 ...