網站首頁 編程語言 正文
C++中for auto的用法
1.for(auto iter:vec)不改變迭代對象的值,for(auto &iter:vec)可以改變迭代對象的值。
兩者都可以獲取到迭代容器中的值,但是使用auto iter時不會對容器對象造成改變,
而使用auto &iter,對于iter的任何修改將直接修改容器內對應的值。
2.簡單的例子
#include <iostream> #include <vector> using namespace std; void printVec(vector<int>& vec) { for (int i = 0; i < vec.size(); i++) cout << vec[i] << endl; } int main() { vector<int>vec = {4,3,2,1,0 }; cout<<"***************第一種*************"<<endl; //這個時候每個取出來的iter只是原來vec元素的副本,不會改變vec中任何元素 for (auto iter : vec) { iter = iter + 100; } printVec(vec); cout<<"***************第二種*************"<<endl; //這個時候取出來的是 &iter,代表原來vec中元素的引用,如果對iter進行任何改變都會作用在vec上 for (auto& iter : vec) { iter = iter + 100; } printVec(vec); }
輸出的結果如下:
***************第一種*************
4
3
2
1
0
***************第二種*************
104
103
102
101
100
C++ for(auto &a:b)、for(auto a:b)、for(const auto &a:b)
b為數組或容器,是被遍歷的對象
-
for(auto &a:b)
,循環體中修改a,b中對應內容也會修改 -
for(auto a:b)
,循環體中修改a,b中內容不受影響 -
for(const auto &a:b)
,a不可修改,用于只讀取b中內容
#include <iostream> using namespace std; void main() { int arr[5] = {1,2,3,4,5}; for (auto &a : arr) { cout << a; } cout << endl; for (auto a : arr) { cout << a; } cout << endl; system("pause"); }
如果僅僅對b進行讀取操作,而不修改,兩者效果一致,如下:
如果需要對b進行修改,則需要用for(auto &a:b),如下:
#include <iostream> using namespace std; void main() { int arr[5] = {1,2,3,4,5}; for (auto &a : arr) { a++; } for (auto a : arr) { cout << a; } cout << endl; system("pause"); }
如果不加&符號,則b不會發生任何修改。
總結
原文鏈接:https://blog.csdn.net/gulosityer/article/details/112554056
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-06-28 python神經網絡使用tensorflow構建長短時記憶LSTM_python
- 2022-07-15 VBScript編寫Windows防止鎖屏腳本程序_vbs
- 2022-07-25 C++細講深淺拷貝與初始化列表如何操作_C 語言
- 2022-05-08 ASP.NET?MVC緩存過濾器用法_實用技巧
- 2022-09-05 python使用pip成功導入庫后還是報錯的解決方法(針對vscode)_python
- 2022-08-23 Django上傳excel表格并將數據寫入數據庫的詳細步驟_python
- 2022-11-05 關于Python?Tkinter?復選框?->Checkbutton_python
- 2022-11-25 Python利用memory_profiler實現內存分析_python
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支