久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

C ++(stl)與Java中的迭代器,有概念上的區別嗎?

Iterators in C++ (stl) vs Java, is there a conceptual difference?(C ++(stl)與Java中的迭代器,有概念上的區別嗎?)
本文介紹了C ++(stl)與Java中的迭代器,有概念上的區別嗎?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

在離開一段時間后,我將返回 C++,并試圖清除舊瓜的灰塵.

在 Java 中,Iterator 是具有以下方法的容器的接口:hasNext()next()remove().hasNext() 的存在意味著它對被遍歷的容器有限制的概念.

//帶有迭代器迭代器<字符串>iter = 樹.iterator();而 (iter.hasNext()){System.out.println(iter.next());}

在 C++ 標準模板庫中,迭代器似乎表示支持 operator++operator== 的數據類型或類,但沒有限制的概念 內置,因此在進入下一個項目之前需要進行比較.在正常情況下,用戶必須通過比較兩個迭代器來檢查限制,第二個迭代器是容器端.

向量向量;向量<int>::iterator iter;//向向量中添加一些元素v.push_back(1);v.push_back(4);v.push_back(8);for (iter= v.begin(); iter != v.end(); iter++){cout <<*i <<" ";//應該輸出1 4 8}

這里有趣的部分是,在 C++ 中,指針是指向數組的迭代器.STL 采用現有的東西并圍繞它建立約定.

我還缺少什么更微妙的地方嗎?

解決方案

是的,存在很大的概念差異.C++ 使用不同的迭代器類".有些用于隨機訪問(與 Java 不同),有些用于前向訪問(如 java).甚至還有一些用于寫入數據(例如,與 transform 一起使用).

請參閱 C++ 文檔中的迭代器概念:

  • 輸入迭代器
  • 輸出迭代器
  • 前向迭代器
  • 雙向迭代器
  • 隨機訪問迭代器

與 Java/C# 的微不足道的迭代器相比,這些迭代器更加有趣和強大.希望這些約定將使用 C++0x 的 Concepts 進行編碼.p>

I'm returning to c++ after being away for a bit and trying to dust off the old melon.

In Java Iterator is an interface to a container having methods: hasNext(), next() and remove(). The presence of hasNext() means it has the concept of a limit for the container being traversed.

//with an Iterator
Iterator<String> iter = trees.iterator();
while (iter.hasNext()) 
{
    System.out.println(iter.next());
}

In the C++ standard template library, iterators seem to represent a datatype or class the supports the operator++ and operator== but has no concept of a limit built in so comparison is required before advancing to the next item. The limit has to checked by the user comparing two iterators in the normal case the second iterator is the container end.

vector<int> vec;
vector<int>::iterator iter;

// Add some elements to vector
v.push_back(1);
v.push_back(4);
v.push_back(8);

for (iter= v.begin(); iter != v.end(); iter++)
{
    cout << *i << " "; //Should output 1 4 8
}

The interesting part here is that in C++ a pointer is an iterator to an array. The STL took what was existing and build convention around it.

It there any further subtlety to this that I am missing?

解決方案

Yes, there is a large conceptual difference. C++ utilizes different "classes" of iterators. Some are used for random access (unlike Java), some are used for forward access (like java). While even others are used for writing data (for use with, say, transform).

See the iterators concept in the C++ Documentation:

  • Input Iterator
  • Output Iterator
  • Forward Iterator
  • Bidirectional Iterator
  • Random Access Iterator

These are far more interesting and powerful compared to Java/C#'s puny iterators. Hopefully these conventions will be codified using C++0x's Concepts.

這篇關于C ++(stl)與Java中的迭代器,有概念上的區別嗎?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Java Remove Duplicates from an Array?(Java從數組中刪除重復項?)
How to fix Invocation failed Unexpected Response from Server: Unauthorized in Android studio(如何修復調用失敗來自服務器的意外響應:在 Android 工作室中未經授權)
AES encryption, got extra trash characters in decrypted file(AES 加密,解密文件中有多余的垃圾字符)
AES Error: Given final block not properly padded(AES 錯誤:給定的最終塊未正確填充)
Detecting incorrect key using AES/GCM in JAVA(在 JAVA 中使用 AES/GCM 檢測不正確的密鑰)
AES-256-CBC in Java(Java 中的 AES-256-CBC)
主站蜘蛛池模板: 亚洲精品福利在线 | 91精品国产91久久久久久三级 | 日日夜夜天天 | 国产成人精品免费视频 | 久久久国产一区二区三区 | 999久久久 | 久久国色 | 曰韩一二三区 | 亚洲va中文字幕 | 久久亚洲精品久久国产一区二区 | 妞干网福利视频 | 国产精品1区2区 | 久久久久久免费毛片精品 | 综合网在线 | www.99热这里只有精品 | 久久久久久久久国产成人免费 | 国产精品美女久久久久久免费 | 一区二区欧美在线 | 精品一区二区久久 | 精品乱人伦一区二区三区 | 日本一区二区三区免费观看 | av网站免费| 成人免费共享视频 | 亚洲精品久久久 | 尤物在线精品视频 | 91视频免费 | 成年人黄色一级片 | 精品国产成人 | 久草a√| 久久成人一区 | 亚洲啪啪 | 欧美日韩综合一区 | 亚洲免费视频网址 | 亚洲+变态+欧美+另类+精品 | 亚洲网站在线观看 | 成人性视频免费网站 | 国产精品乱码一二三区的特点 | 免费的色网站 | 亚洲精品久久久久久久不卡四虎 | 国产精品乱码一区二三区小蝌蚪 | 红色av社区 |