数组
来源:互联网 发布:装修淘宝店铺怎么装修 编辑:程序博客网 时间:2024/04/28 22:09
存储块就是一个数组,它是根据基址和偏移地址来寻址的,而数组也是这样。
数组的优势是a[i]。因为数组跟存储块有着惊人的相似之处所以数组能够根据索引(相对位置)快速的访
问到其中的元素,这就是数组的a[i]优势(a[i]就简单的对应几条机器指令)。
数组的特点是:
物以类聚,元素都是同一种类型。
左邻右舍,线性连续存储。
C/C++语言中的数组不支持下标越界检查,即数组越界时不会抛出异常,程序无法捕捉--try..catch没用
。而stl里面的vector的成员函数at是支持越界检查的,在越界时它会抛出out_of_range异常,程序因此
可以捕捉到;但vector的operator[]是不支持越界检查的(即不抛出异常)。以下是一个例子:
vector<int> data;
data.push_back(1);
try
{
cout << data.at(1) << endl;
// 抛出out_of_range异常。如果换成data[1]则没有异常抛出,系统终止程序并报错。
}
catch( out_of_range e )
{
cout << "out of range" << endl;
}
catch(...)
{
cout << "exception" << endl;
}
以下是用数组vector来求质数的一个例子:
vector<int> data;
data.reserve(10001); // 0到10000的质数
for ( int pos = 0; pos < 10001; pos ++ )
{
data.push_back(1); // 假定所有都是质数,以1标识
}
for ( int pos = 2; pos < 10001; pos ++ )
{
if ( (pos%2==0) || (pos%3==0) || (pos%5==0) )
data[pos] = 0; // 2或3或5的倍数不是质数
}
data[2] = data[3] = data[5] = 1;
// 输出质数
for ( int pos = 2; pos < 10001; pos ++ )
{
if ( data[pos] == 1 )
{
cout << pos << " ";
}
}
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- 数组
- WindowsForm登陆窗体的建立
- .net+oracle+crystalReports开发web应用程序学习笔记(
- Window 中窗口的层次关系以及窗口的属性
- 利用C#在SQL Server2000存取图像 For Window
- 字节对齐
- 数组
- 结合存储过程开发数据库应用程序
- 修改的判断mp3文件方法
- DIY:请大家来估价吧
- .net内存回收与Dispose﹐Close﹐Finalize方法1
- 如何开发一个可复用的软件系统
- ITDS安装的一次恶心经历
- 使用的DES对称加密
- 非常了不起的工具iNET----------帮你实现.NET项目跨平