uninitialized_copy测试代码示例

原测试代码如下:

int main() {vector<int>v1{1,3,5,7,9,2,4,6,8};allocator<int>alloc;auto data = alloc.allocate(9);uninitialized_copy(v1.begin(),v1.end(), data);auto end = data + 9;while(data!=end) {cout << *data <<" ";data++;}cout << endl;system("pause");return 0;
}

运行后报错界面如下:

1>------ 已启动生成: 项目: ConsoleApplication1, 配置: Debug Win32 ------
1>  test2.cpp
1>e:\0000softwareinstall\visualstudio\vc\include\xmemory(350): error C4996: 'std::_Uninitialized_copy0': 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'
1>  e:\0000softwareinstall\visualstudio\vc\include\xmemory(336): note: 参见“std::_Uninitialized_copy0”的声明
1>  e:\study\c++\primer练习程序\consoleapplication1\consoleapplication1\test2.cpp(10): note: 参见对正在编译的函数 模板 实例化“_FwdIt std::uninitialized_copy<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int>>>,int*>(_InIt,_InIt,_FwdIt)”的引用
1>          with
1>          [
1>              _FwdIt=int *,
1>              _InIt=std::_Vector_iterator<std::_Vector_val<std::_Simple_types<int>>>
1>          ]

在其头部加#define _SCL_SECURE_NO_WARNINGS,即可运行成功

#define _SCL_SECURE_NO_WARNINGS
#include<vector>
# include<iostream>
using namespace std;int main() {vector<int>v1{ 1,3,5,7,9,2,4,6,8 };allocator<int>alloc;auto data = alloc.allocate(9);uninitialized_copy(v1.begin(), v1.end(), data);auto end = data + 9;while (data != end) {cout << *data << " ";data++;}cout << endl;system("pause");return 0;
}

输出结果为:

1 3 5 7 9 2 4 6 8

即,我们将v1中的数据拷贝到了以data为起始地址的内存中

测试代码二:

#define _SCL_SECURE_NO_WARNINGS
#include<vector>
# include<iostream>
using namespace std;int main() {vector<int>v1{ 2,4 };vector<int>v2{ 1,3,5,7,9,2,4,6,8 };uninitialized_copy(v1.begin(), v1.end(), v2.begin());for (auto a:v2) {cout << a << " ";}cout << endl;system("pause");return 0;
}

输出结果:

2 4 5 7 9 2 4 6 8

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言的地址 内存

取地址在CPU的寄存器产生&#xff0c;不占据内存地址由计算器总线&#xff0c;地址作为常量不消耗内存指针 存储不同的地址&#xff0c;间接赋值空类型指针 void* 类型指针 不可以取数据 或者修改数据 需要进行强制类型转换int num 10;void *p &num;std::cout << …

C语言 多重指针--整型字符字符串 int**pp

介绍 多重指针:一个指针指向另一个指针 离值越近的指针级别越大:一级 内存布局 代码 图示: 多重指针–整型 #include<stdio.h> #include<string.h> //多重指针--整型//二级指针 void two() {printf("二级指针:\n");int a896;int *p&a,**pp&…

C++ primer 第13章 拷贝控制

文章目录前言拷贝、赋值与销毁拷贝构造函数合成拷贝构造函数拷贝初始化和直接初始化拷贝初始化的发生&#xff1a;参数和返回值拷贝初始化的限制拷贝赋值运算符重载赋值运算符合成拷贝赋值运算符析构函数析构函数完成的工作什么时候会调用析构函数合成析构函数代码片段调用几次…

牛客网C++面经 C++11

请问C11有哪些新特性&#xff1f; auto关键字&#xff1a;编译器可以根据初始值自动推导出类型。但是不能用于函数传参以及数组类型的推导nullptr关键字&#xff1a;nullptr是一种特殊类型的字面值&#xff0c;它可以被转换成任意其它的指针类型&#xff1b;而NULL一般被宏定义…

C语言 返回指针的函数--指针函数 int* max(int a)

定义 strlong示例代码 代码1: #include<stdio.h> #include<string.h> //返回指针的函数//比较两个字符串,返回更长的字符串 char *strlong(char* a,char* b) {char *p1&a[0];char *p2&b[0];while(true){if(*p1\0){return b;}else if(*p2\0){return a;}p1…

第2、3讲 图像的存储格式

本图像处理系列笔记是基于B站杨淑莹老师的课程进行学习整理的。 文章目录黑白图像8位灰度索引图像8位伪彩色索引图像24位真彩色图像图像文件格式BMP文件存储格式BMP文件头位图信息头颜色表位图信息——BITMAPINFO结构BMP位图文件汇总按照颜色深度分类&#xff0c;常用图像文件&…

Ubuntu18.04.4 环境下对属性加密算法CP-ABE环境搭建

注意事项 cpabe依赖pbc&#xff0c;pbc依赖gmp&#xff0c;gmp依赖M4、bison、flex如果权限不够 &#xff0c;命令的前面加上sudo &#xff0c;不要直接使用root用户进行操作&#xff0c;其带来的隐患有很多 第一步 配置简单的环境 简单环境 包括gcc、g、make、cmake、openss…

C语言 函数指针 int(*ptr)(int,int)

基本介绍 函数指针:指向函数的指针 与数组类似 定义 Int(*pmax)(int ,int)max; Int(*pmax)(int x,int y)max;//形参名称不重要 函数返回类型(*指针)(形参类型)函数名称; 具体案例 代码: *pmax取到函数本身 调用函数指针方式: (*pmax)(x,y); pmax(x,y);//与java中调用函数一…

C++ primer 第14章 操作重载与类型转换

文章目录基本概念直接调用一个重载的运算符函数某些运算符不应该被重载使用与内置类型一致的含义选择作为成员或者非成员输入和输出运算符重载输出运算符<<输出运算符尽量减少格式化操作输入输出运算符必须是非成员函数重载输入运算符>>算术和关系运算符相等运算符…

C语言 回调函数 produce(arr,len,getRand)

基本介绍 回调函数:形参中包含另一个函数的函数指针 用函数指针接收另一个函数 案例 代码解析 具体代码 #include<stdio.h> #include<stdlib.h> //回调函数--//函数原型 int getRand(); int *produce(int*arr,int len,int(*get)()); int main() {int arr[10…

从零开始配置服务器密码机的开发环境

开发环境环境配置安装gcc编译器安装g编译器安装make安装cmake安装ssh安装git和配置安装大文件管理工具git-lfs安装数据库sqlite3安装数据库sqlite_orm文件安装Openssl安装Tcl和Tk安装tcl-expect-dev安装boost安装clang-format安装Clion注意事项安装automake和libudev-dev环境配…

C语言 动态内存分配机制(堆区) int*p=malloc(5*sizeof(4))

C程序内存分配图 栈区:局部变量 堆区:动态分配的数据 静态存储区/全局区:全局变量,静态数据 代码区:代码,指令 内存分配说明 内存动态分配的相关函数 堆区: #inlcude<stdlib.h> Malloc(size);//分配长度为size个字节的连续空间 Calloc(n,size);//分配size个长度为n…

C++ primer 第15章 面向对象程序设计

文章目录前言OOP&#xff1a;概述继承动态绑定定义基类和派生类定义基类成员函数与继承访问控制与继承定义派生类派生类中的虚函数派生类对象及派生类向基类的类型转换派生类构造函数派生类使用基类的成员继承与静态成员派生类的声明被用作基类的类防止继承的发生类型转换与继承…

服务器密码机部分文件的介绍学习

相关文件包 automake,autoconf使用详解

C语言 结构体 struct Cat cat1;

引入 使用传统技术解决 需要定义多个变量或数组 结构体与结构体变量的关系示意图 类似Java类中的对象(结构体)与属性(结构体变量) 一切物体都可以看作对象(结构体) 补充:C语言数据类型 简单使用案例 代码 Cat是我们自己定义的数据类型 struct Cat cat1;//创建struct Cat的…

boost Filesystem Library Version 3关于文件的一些函数封装 fsync()函数

boost boost Filesystem Library Version 3boost::filesystem使用方法,根据路径创建文件夹使用boost.filesystem检查文件是否存在的正确方式std::filesystem::temp_directory_path关于C#:与boost :: filesystem :: unique_path()等效的C 17是什么?C++ 檔案、資料夾、路徑處理…

c++面向对象高级编程 总目录

本文是对学习侯捷视频 c面向对象高级编程系列博客的目录总索引。 c面向对象高级编程 学习一 不带指针的类&#xff1a; 访问私有成员变量的方式&#xff0c;内联inline&#xff0c;常量成员函数&#xff0c;构造函数&#xff0c;值传递&#xff0c;引用传递&#xff0c;操作符…

C语言 共用体/联合体 union

引入 传统技术的缺陷—结构体 共用体基本介绍 共用体与结构体一样都是值传递 定义共用体的三种方式 内存布局 共用体数据空间占用最大的成员的数据空间大小 案例解析 1) 2) 3) 4) 注: 1010 1101 0101 0100所对应的十进制是负数 计算机中的二进制都是以补码存储的,所…

C++ Makefile文件详解

什么是Makefile文件 一个工程&#xff0c;源文件不计其数&#xff0c;按照类型、功能、模块分别放在对应的若干个目录中Makefile定义了一系列的规则&#xff0c;比如定义文件编译的先后顺序。类似shell脚本&#xff0c;也可以执行操作系统的命令Makefile带来的好处是自动化编译…

C语言 项目练习-家庭收支软件

目标 需求说明 界面说明 登记收入界面: 登记支出界面 收支明细界面 退出界面 项目代码改进要求 自己完成的代码 版本1 #include<stdio.h> #include<string.h> void choose(int button,int i); //项目--家庭收支软件 static double total10000;//总金额 #de…