许多标准库容器都具有接受迭代器指定范围的操作.例如,std :: list :: assign(首先是InputIterator,最后是InputIterator).

但是因为许多这些操作不会抛出异常,如果[first,last]指定的范围无效,则会导致未定义的行为.

那么什么是有效范围?我认为这意味着它首先出现在容器中,或者等于容器中的最后一个,因为当我尝试其他方式时(即首先出现在最后),程序的执行将会挂起.

例如:

std::list.assign(container.begin(), container.end()); // valid range

std::list.assign(container.end(), container.begin()); // invalid range

现在假设有效范围是什么,我们如何检查范围是否有效?

我想出了一个辅助函数,它检查在到达容器末尾之前是否始终等于last.如果是真的,这是一个强有力的保证,首先不会在最后,因此范围是有效的.

template

bool isValidRange(Iterator first, Iterator last, Iterator end)

{

for (; first != end; ++first)

if (first == last) return true;

return false;

}

这不是很方便,因为除了指定范围的迭代器之外,还必须将迭代器传递给容器的末尾.

它是否正确?有一个更好的方法吗?

解决方法:

how can we check if a range is valid?

你不能.您的函数不能保证范围有效,只能从最后一个可以到达.这是两个不同的事情(对于一个简单的例子,考虑将迭代器转换为随后重新分配的向量).标准没有允许您检查范围是否有效的机制.就像你在取消引用之前无法知道指针有效一样.

需要注意的是,Microsoft提供了一个函数来检查指针是否有效,并且完全搞砸了使用它的每个人.雷蒙德陈说它应该被命名为CorruptMemoryIfPossible.

标签:c,iterator,c-standard-library

来源: https://codeday.me/bug/20190728/1566193.html

matlab指定的数据范围无效,c – 如何检查迭代器指定的范围是否有效?相关推荐

  1. 用matlab读csv数据_Matlab读取csv文件csvread函数的使用

    3.7 (3) 今天来说下如何使用Matlab读取excel的csv文件,这个有什么用呢?想必理科生大概率都会用到示波器,去抓取一些电信号或者光信号,我们从示波器导出来的就是csv文件或者图片文件,而 ...

  2. matlab中的数据导入和导出

    在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文件.MATLAB使用多种格式打开和保存数据.本章将要介绍 MATLAB中文件的读写和数据的导入导出. 13.1  数据基本操作 本 ...

  3. matlab绘制离散数据图

    用Matlab来对实验中获得的数据进行画图,得到更加直观的结果. 工具/原料 Matlab 方法/步骤 Matlab使用stem和stairs函数绘制离散数据,分别生成火柴棍图像和二维阶梯图像. st ...

  4. 加密解密时遇到的不正确的数据以及要解密的数据长度无效问题解决方案

    这两天一直在为文件加密解密时,由于关闭数据转换链接流CryptoStream或者使用FlushFinalBlock时出现的 "不正确的数据"和"要解密的数据长度无效&qu ...

  5. matlab读入txt数据_教程合集 | MATLAB文件读写(以nc与txt为例)

    周一到!我们又和大家见面啦!最近几周的主题是,有了数据,那我们怎么读写数据文件呢?气象中的特殊资料又有哪些处理方法呢?以txt和nc文件做引子,欢迎各位拍砖~ No.1 基础通用知识 读写文件时有一些 ...

  6. matlab将数据输出到excel中,matlab将数据保存为excel表格-怎样将MATLAB中的数据输出到excel中...

    怎样将MATLAB中的数据输出到excel中? xlswrite()函数可以将matlab中数据保存到excel中,请面例子: >> data = magic(5) % 示例数据 data ...

  7. matlab采样频谱,Matlab对采样数据进行频谱分析

    使用Matlab对采样数据进行频谱分析 1.采样数据导入Matlab 采样数据的导入至少有三种方法. 第一就是手动将数据整理成Matlab支持的格式,这种方法仅适用于数据量比较小的采样. 第二种方法是 ...

  8. matlab表格数据输入方式,matlab输入excel表格数据-matlab怎么把数据写入excel

    怎样将MATLAB中的数据输出到excel中 第一:程序的方法 I=xlsread('文件名.xls');%注意文件要在matlab的读取路径中. 第二:快捷方法 如何将excel表格中大量数据导入m ...

  9. matlab提取数据的一部分,matlab处理excel数据【怎么用MATLAB从excel中提取部分数据】...

    已经把excel的一列导入到matlab的工作区,怎么计算这一列数的均值.标准差.最小值.最大值以及中位数? 把这个EXCEL放到matlab目录下的work里,假设名为1.xls,然后在matlab ...

  10. matlab高程数据点,matlab 对tif数据高程图的处理分析

    temp=z(101:2200,101:2200) 根据图像属性可得此为2300*2300的tif图像,由于需要将其划分为9宫格,所以begin点设置为101,end点设置为2200,temp转化为可 ...

最新文章

  1. 2022-2028中国空中互联网系统市场现状及未来发展趋势报告
  2. Primality Test 素数,打表
  3. Linux之Centos允许root连接ftp
  4. gimp教程:gimp界面介绍
  5. VS2015中快捷注释代码块
  6. 年后开课 | 第 4 期临床基因组家系分析,助力发表Case Report
  7. Linux(一):VMware安装出现的问题
  8. 【白皮书分享】2020年度薪酬白皮书.pdf(附下载链接)
  9. List对象集合通过对象属性进行查找
  10. python iotextwrapp执行不动_Python tkinter - 第10章 文本控件(Text)方法
  11. lua学习 第二章数据与标准库
  12. 不常用,但热门的IOS第三方库(转)
  13. 2、恩智浦-车规级-MCU :S32K11X GPIO实验
  14. win2012服务器 注册表,第十一章 Windows Server 2012 R2 注册表域注册表编辑器 ---学习笔记...
  15. 【渝粤题库】国家开放大学2021春2409中国古代文学(B)(1)题目
  16. debian 修改桌面背景
  17. html5 倒计时跳转动画,HTML5弹性摇摆旋转的倒计时动画
  18. 计算机的未来无可限量英文,(整理笔记)Day86【BBC】无人驾驶5:无人驾驶已是大势所趋 The trend of driverless cars is unstoppable...
  19. 计算机科学技术学院迎新晚会主题,计算机科学与技术学院2019迎新晚会圆满落幕...
  20. vpu测试_一种普适的手机平台vpu视频编解码性能检测方法

热门文章

  1. java单链表删除重复元素_用加头节点实现链表的删除重复元素、分割、翻转(Java实现)...
  2. Java 高级知识系列篇
  3. Android Button 实现渐变背景色、外边框颜色、圆角弧度、点击变色(完整源码)
  4. 20190528论文笔记
  5. Luogu 3423 [POI 2005]BAN-银行票据 (多重背包单调队列优化 + 方案打印)
  6. (一)apache atlas源代码编译与打包
  7. NSURLConnection实现断点续传
  8. hdu1215七夕节
  9. HDU 2955 Robberies抢劫案(01背包,变形)
  10. 修改Flume-NG的hdfs sink解析时间戳源码大幅提高写入性能