std::iterator、指针和 VC++ 警告 C4996

2023-12-28

int *arr = (int*) malloc(100*sizeof(int));
int *arr_copy = (int*) malloc(100*sizeof(int));
srand(123456789L);
for( int i = 0; i < 100; i++) {
    arr[i] = rand();
    arr_copy[i] = arr[i];
}

// ------ do stuff with arr ------

// reset arr...
std::copy(arr_copy, arr_copy+100,  arr);

编译时我收到此警告std::copy():

c:\program files (x86)\microsoft visual studio 10.0\vc\include\xutility(2227):
warning C4996: 'std::_Copy_impl': Function call with parameters that may be
unsafe - this call relies on the caller to check that the passed values are 
correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See 
documentation on how to use Visual C++ 'Checked Iterators'

我知道如何禁用/忽略警告,但是是否有一种简单的单行解决方案可以从未经检查的指针中创建“经过检查的迭代器”?类似的东西(我知道 cout 不是像 int* 这样的未经检查的指针,但只是例如):

ostream_iterator<int>  out(cout," ");

std::copy(arr_copy, arr_copy+numElements,  out);

我不想写一个全新的专业class my_int_arr_output_iterator : iterator...。但我可以使用现有的迭代器之一吗?

- -编辑 - -

由于关于我使用 c 风格数组和 malloc 而不是 STL 容器有很多问题,我只想说我正在编写一个小程序来测试不同排序算法的性能和内存使用情况。您在上面看到的代码片段是特定于该问题的专用版本(原始代码是具有多种方法的模板类,针对不同类型的数组中的不同数量的元素测试一种算法)。

换句话说,我确实知道如何使用 STL 容器(向量)及其迭代器(向量::开始/结束)来做到这一点。我不知道的是I asked.

不过谢谢,希望其他人能从答案中受益,即使不是我。


您正在寻找的直接答案是stdext::checked_array_iterator http://msdn.microsoft.com/en-us/library/aa985928%28v=vs.80%29.aspx。这可用于将指针及其长度包装到 MSVC checked_iterator 中。

std::copy(arr_copy, arr_copy+100, stdext::checked_array_iterator<int*>(arr, 100) );

他们还提供stdext::checked_iterator http://msdn.microsoft.com/en-us/library/aa985943%28v=vs.80%29.aspx它可以包装非检查容器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

std::iterator、指针和 VC++ 警告 C4996 的相关文章

  • 我可以声明一个可以将指向自身的指针作为参数的函数吗?

    在阅读 stackoverflow 中的一个问题时 我想知道是否可以声明一个带有指向自身的指针的函数 IE 作出这样的声明foo 对于其中以下内容是正确的 foo foo 最简单的想法是转换为另一个函数指针 不能转换为void 因为它可能更
  • 使用顶点缓冲区对象 (VBO) 渲染 Kinect 点云

    我正在尝试制作一个动态点云可视化工具 使用 Kinect 传感器每帧更新这些点 为了抓取帧 我使用 OpenCV 和 GLUT 来显示 OpenCV API 对于点 xyz 位置返回 640 x 480 float 对于 rgb 颜色数据返
  • 如何使用 ioread64() 和 iowrite64() 访问 IO 内存?

    背景 我目前正在编写一个设备驱动程序教育设备 https github com qemu qemu blob master hw misc edu c在 qemu RISC V 中 由此question https stackoverflo
  • WriteLine 与类

    我正在制作一个 SchoolApp 程序来学习 C 并且我正在尝试实现以下主要功能 namespace SchoolApp class Program public static void Main string args School s
  • 如何访问UPnP设备的服务?

    设备 贝尔金 WeMo Switch开发环境 Windows 7 上的 MS VC 2010 我正在尝试使用 Windows 中的 C 枚举 UPnP 设备的服务 我有IUPnPDevice指针并可以访问多个属性 我有IUPnPServic
  • EF 6:映射复杂类型集合?

    EF 6 代码优先 是否支持复杂类型集合 值对象集合 映射 我知道它支持复杂类型 但还没有找到我们拥有复杂类型集合的示例 例如 假设您有一个名为 Student 的实体 其中包含联系人集合 对于 NH 我可以简单地说 Student 有一个
  • 如何从 XmlDocument() 上的 URL 加载 XML

    我有这个代码 string m strFilePath http www google com ig api weather 12414 hl it XmlDocument myXmlDocument new XmlDocument myX
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • NHibernate 在生产中很少会抛出违反主键异常,无法用测试用例重现

    试图弄清楚这个问题 对我来说 这似乎不可能 我的服务器报告在繁忙的服务器上每天发生一次或两次以下错误 PlaylistItem create System Data SqlClient SqlException Violation of P
  • 在.NET windows窗体中向TableLayoutPanel添加动态控件

    我想在单击按钮时动态地将控件添加到面板 但我想整理一下位置 例如 我想要两个并排的文本框宽度相等 占用面板的相等空间 见下图 正如您在上图中看到的 单击按钮时 将添加控件 但我在使用 TableLayoutPanel 时遇到问题 请参阅下面
  • 将字符串数组转换为 List

    我见过使用这个完成的例子 ToList 对于数组类型 这似乎仅可用在 Net 3 5 中 http msdn microsoft com en us library bb342261 aspx 我正在一个 ASP NET 项目上使用 NET
  • cppcheck 找不到包含文件

    cppcheck 甚至找不到标准标头 例如 iostream 有任何想法吗 我正在使用 Ubuntu 11 04 和存储库中的 cppcheck cppcheck 在 Mac 和 Linux 上查找标准包含头确实很糟糕 幸运的是 您可以取消
  • EF6“模型配置”已设置但未发现

    我有以下库 实体模型 dll 包含 POCO 类 实体DAL dll 引用EntityMODEL dll 实体服务 dll 引用 EntityMODEL dll 和 EntityDAL dll 实体测试 dll 引用 EntitySERVI
  • C# 在不使用反射的情况下运行时出现“找不到方法”异常

    我在获得上述异常时遇到问题 我有一个相对简单的结构 分为两个 dll 第一个包含 IEntityService IEntity 和基本实现 第二个包含实际的实现和接口 因此 有一个 IMachine 服务实现了 IEntityService
  • 如何使用 mongo-cxx-driver 设置 Visual Studio 项目设置?

    我已经在 Windows 10 上成功构建了用于 C 的 MongoDB 驱动程序版本 3 0 3 CMAKE INSTALL PREFIX C mongo cxx driver 但我不知道如何在 Visual Studio 2015 中设
  • 在 C# 中使用 Nsubstitute 模拟具有固定参数的可选参数的函数返回 null

    我一直在尝试模拟一个包含带有固定参数的可选参数的函数 但每次我得到一个空值 这是我在接口中定义的函数 我想模拟它 List GetEntitiesByIDs List
  • 处理多个自动重定向的正确方法是什么?

    我有一个网站 基本上允许客户构建一个包含可配置项目的购物车 用户将选择一个项目 系统会提示他们选择他们想要的第一个选项 然后他们将被发送到第二个步骤 在那里他们选择第二个选项 等等 步骤数和选项数是可变的 因为它们是由客户定义的 通常该项目
  • 将 CreateThread 与 lambda 结合使用

    只是试验 但我想知道是否可以使该代码工作 如编译 void main int number 5 DWORD dontThreadOnMe PVOID PVOID data int value int data cout lt lt valu
  • 简单的 C# 屏幕共享应用程序

    我希望用 C 创建一个非常基本的屏幕共享应用程序 无需远程控制 我只希望用户能够将他们的屏幕广播到网络服务器 我应该如何实施这个 任何指向正确方向的指针将不胜感激 它不需要很高的 FPS 甚至更新 5 秒左右就足够了 您认为每隔 5 秒上传
  • PerformanceCounter.NextValue() 抛出 InvalidOperationException

    这是创建性能计数器的代码 var ftpPerfCounter new PerformanceCounter FTP Service Current Connections Total 这是异常发生的地方 int cnt int Math

随机推荐

  • 如何在 MySQL 中创建表别名

    我正在将 MS Access 应用程序 已将表链接到 MSSQL Server 迁移到 MySQL 作为克服一些 MSAccess 表命名问题的方法 我正在寻求一种解决方案来添加 MySQL 表别名 该别名将指向 MySQL 数据库中的现有
  • Javascript 隐藏所选选项

    我有这段代码来隐藏选定的选项 function connect selectbox option show selectbox each function i var obj selectbox option value this val
  • Django自定义用户管理员change_password

    我成功地在 django 中使用了自定义用户模型 最后要做的事情是超级用户更改任何用户密码的 AdminChangePasswordForm 目前 来自 admin myapp user 的更改密码链接给出了 404 答案 覆盖 get u
  • 数组的长度属性在哪里定义?

    我们可以确定一个的长度ArrayList
  • 如何在 C# 中将 SID 转换为帐户名

    我有一个 C 应用程序 可以扫描目录并收集一些信息 我想显示每个文件的帐户名 我可以通过获取 FileInfo 对象的 SID 在本地系统上执行此操作 然后执行以下操作 string GetNameFromSID SecurityIdent
  • C++ 相当于 Python __getattr__(self, name)

    我喜欢 Python 的原因之一是它的方式自定义属性访问 https docs python org 2 reference datamodel html customizing attribute access class Foo obj
  • 在Prolog中查找最大子列表

    我是 Prolog 新手 正在尝试解决以下问题的实例最大子数组问题 https en wikipedia org wiki Maximum subarray problem 我有以下相当优雅的 C 代码 int maxSubArray ve
  • 带阴影的 UIView

    我试图在一个简单的 UIView 对象周围创建一个阴影 该对象添加到 UIViewController 视图的顶部 这样做最直接的方法是什么 首先 请务必导入 Quartz Core 库 import
  • Foundation 可以告诉我 Objective-C 方法是否需要特殊的结构返回吗?

    据我了解 背景 Objective C 方法调用基本上是带有两个隐藏参数 接收器和选择器 的 C 函数调用 Objective C 运行时包含一个名为 objc msgSend 的函数 允许以这种方式调用方法 不幸的是 当函数返回结构时 可
  • 为 OpenCL 设置 Visual Studio 2010 的正确方法

    设置 VisualStuio 2010 处理 cl 文件的正确方法是什么 我在工具 文本编辑器 文件扩展名下添加了 cl 并将 usertype dat 复制到 common7 ide 文件夹中 但 VS 为 float4 或 cross
  • 如何在登录后正确注销 Java EE 6 Web 应用程序

    一个非常简单的要求 登录 Web J2EE 6 应用程序后 如何让用户再次注销 我见过的大多数 全部 书籍和教程都展示了如何向其应用程序添加登录 登录错误页面 并使用 j security check 方法演示安全主体 角色 领域等的使用
  • 处理 SQL 连接

    我有一个连接到数据库并检索数据表的 SQL 类 我知道 SqlConnection 必须在完成后释放 我知道这可以使用using块 但是也可以接受Dispose 在这个类的析构函数中调用 这是我的代码 public class SQLEng
  • 使用 Visual Studio 2010 时出现 System.OutOfMemoryException

    当我的笔记本电脑中确实有很多未使用的内存时 我收到了名为 system outofmemory exception 的非常烦人的消息 除非我关闭并重新打开解决方案 否则它不会让我继续我的工作 是否有任何配置或服务包可以解决该问题 Thank
  • 编辑后保留文本的突出显示颜色

    删除前面一行的内容后 无法保留我在 RichTextBox 中设置的文本上的突出显示效果 无论我从控件中删除多少文本 它总是会删除我设置为已包含在其中的文本的自定义选择颜色和选择背景颜色 我的删除方法的代码 private void btn
  • asdf erlang 在 macOS 上编译失败

    我正在尝试通过 asdf 在 macOS 11 3 1 上安装 erlang 22 3 4 18 erlang 的 asdf 插件 https github com asdf vm asdf erlang OSX 特定的说明说要安装auto
  • NSCoding 和 Codable 可以共存吗?

    在测试新的 Codable 如何与 NSCoding 交互时 我整理了一个游乐场测试 涉及使用包含 Codable 结构的类的 NSCoding 到惠特 struct Unward Codable var id Int var job St
  • django python 排序错误

    出现以下错误的原因是什么 当我尝试使用以下内容进行过滤时 if MyObject objects filter location aDictionary address 其中位置定义为 location models CharField m
  • 在 Postgres 中通过未知键从 jsonb 获取元素

    我有以下数据结构 proccess1 error error1 description nextRetryAt 2018 02 22T07 39 00 325Z attemptsMade 148 firstFailedAt 2018 02
  • 在路径中绘制不同颜色的形状(HTML5 Canvas / Javascript)

    我正在尝试绘制多个填充不同颜色的圆弧 draw ctx beginPath ctx fillStyle black ctx arc 30 30 20 0 Math PI 2 true ctx fill ctx fillStyle red c
  • std::iterator、指针和 VC++ 警告 C4996

    int arr int malloc 100 sizeof int int arr copy int malloc 100 sizeof int srand 123456789L for int i 0 i lt 100 i arr i r