C++11 auto关键字

在使用关键字auto的时候,遇到了一个问题,如下:

我想修改pair<int,queue<int> >中queue,在for(auto p :pq)循环中修改生效,退出循环后,修改失效。

改为 for(auto &p :pq)即可。

原因:

auto 声明的是一个变量,会完全复制原来的对象,修改的是新生成的对象。

auto & 声明的是一个引用,修改原来的对象

原文地址:https://www.cnblogs.com/MalcolmMeng/p/9749912.html

时间: 2024-10-20 21:41:05

C++11 auto关键字的相关文章

c++11 新特性之 auto关键字

C++11是对目前C++语言的扩展和修正.C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto.decltype,和模板的大量改进. g++编译c++11命令加上 -std=c++11 C++11中引入auto第一种作用是为了自动类型推导 auto的自动类型推导,用于从初始化表达式中推断出变量的数据类型.通过auto的自动类型推导,可以简化我们的编程工作 auto实际上实在编译时对变量进行了类型推导,所以不会对程序的运行效率造成不良影响另外,似乎auto并不会影响编译速度,

C++11 - 类型推导auto关键字

c++11中,auto关键字被作为类型自动推导关键字,借助于auto关键字,可对变量进行隐式的类型定义,即由编译器在编译期间根据变量的初始化语句,自动推断出该变量的类型. 1.基本用法 (1)基本用法: auto 变量名 = 初值; 1 2 3 4 auto a = 1;  //a被推导为int类型的 auto b = new auto(2); //b被推导为int* auto const *c = &a; auto const *d = 3; (2)在旧语法中,auto类型变量存储于栈区,st

C++11老关键字的新含义(auto, using,extern)

http://blog.csdn.net/cnsword/article/details/8034947 公司可以使用c++11.看大牛的代码模仿使用,所以现在已经不知道什么使用的是c++的语法还是c++11的语法了...不知道算不算是一种悲哀 C++11对关键字进行了修订,加入了nullptr.constexpr.decltype.default.static_assert等,同时原有的关键字(auto,using,extern)含义和用途进行了修订.在这里主要了解一下对auto.using.

(转载)你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)

你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11) 3.5.2  字符串类型 使用char类型的变量我们可以表示单个字符,那么,我们又该如何表示拥有多个字符的字符串呢? 我们注意到,一个字符串是由多个字符串连起来形成的.很自然地,一种最简单直接的方法就是利用数组(一种数据组织管理方式,它将多个相同类型的数据元素组织起来,形成一个数据序列以便于访问.更多可以参考后文3.6小节对数组的介绍)来保存一个字符串中的各个字符,最后用一个特

你好,C++(11)如何用string数据类型表示一串文字?根据初始值自动推断数据类型的auto关键字(C++ 11)

3.5.2  字符串类型 使用char类型的变量我们可以表示单个字符,那么,我们又该如何表示拥有多个字符的字符串呢? 我们注意到,一个字符串是由多个字符串连起来形成的.很自然地,一种最简单直接的方法就是利用数组(一种数据组织管理方式,它将多个相同类型的数据元素组织起来,形成一个数据序列以便于访问.更多可以参考后文3.6小节对数组的介绍)来保存一个字符串中的各个字符,最后用一个特殊字符'\0'表示字符串的结束,以此来将多个char类型的字符数据串联成字符串.例如: // 定义一个字符数组,用以保存

C++新特性-auto关键字

1 auto关键字 在介绍之前,我们先来了解一个新增的关键字auto. 在C++11中,如果编译器能够在变量的声明时,能够推断出其类型:那么,代替之前必须把变量类型放在声明之前的做法,可以直接用auto进行变量的声明: int x = 4; 也就是说,上面的声明语句可以被下面的语句替代: auto x = 4; 当然了,这肯定不是auto关键字设计的根本目的.它最大的作用还是和模板及容器配合使用: vector<int> vec; auto itr = vec.iterator(); // 代

C++ auto关键字

1.auto关键一的优点 auto关键字可以知道编译器根据变量的初始表达式来推倒变量的类型,使用auto主要有一下方面的优点: (1) 鲁棒性:当表达式的类型改变,包括函数返回值类型的转变,程序依然可以正确运行,不需要改变所有的变量类型. (2) 性能:可以消除类型转换. (3) 易用性:不用担心类型名错误 (4) 高效:会让程序更加有效率 auto是一个类型占位符,本身并不是一个类型,所以不可以使用sizeof或typeid 2.auto关键字会去掉变量的reference,const,vol

C++教程之auto关键字的使用

一.auto关键字的前世 从C语言开始,auto关键字就被当作是一个变量的存储类型修饰符,表示自动变量(局部变量).它不能被单独使用,否则编译器会给出警告. #include <stdio.h> int main() { int a = 123; auto int b = 234; auto c = 345; printf("a = %d, b = %d, c = %d\n", a, b, c); return 0; } 编译运行结果: $ gcc main.c main.

auto关键字

auto关键字:1.C++98标准auto关键字的作用和C语言的相同,表示自动变量,是关于变量存储位置的类型饰词,通常不写,因为局部变量的默认存储就是auto 1 void foo(void) 2 { 3 int a; //变量存储在栈区 4 auto int b; //自动变量,存储在栈区 5 static int c; //静态变量,存储在数据区 6 register int d;//寄存器变量,存储在寄存器中 7 } 2.C++11标准中auto关键字不再表示变量的存储类型,而是用于类型推