久久久久久久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)
主站蜘蛛池模板: 欧美色偷偷 | 99国产精品99久久久久久 | 黄色片在线播放 | 欧美精品二区三区四区免费看视频 | 欧美激情免费 | aaa黄色| 欧美黄色片视频 | 中文字幕在线播放视频 | 国产精品久久久久久久久久久久午夜片 | 成人欧美一区二区三区黑人孕妇 | 天天舔天天干 | 欧美在线不卡 | 国产精品久久久一区二区三区 | 日韩精品视频免费在线观看 | 精品在线看 | av基地网 | 成人片在线看 | 国产专区在线 | 国产成人三级一区二区在线观看一 | 久久av红桃一区二区小说 | 超碰免费在线播放 | 一级黄色在线观看 | 亚洲精品午夜精品 | 日韩小视频 | 国产中文字幕在线 | 国产精品久久 | 国产一区二区三区在线 | 国产一区二区三区久久 | 国产视频中文字幕 | 久久九九99 | 五月综合色| 在线观看的av网站 | 欧美不卡在线 | 天天综合av | 少妇高潮露脸国语对白 | 亚洲午夜视频 | 在线亚洲精品 | 中文字幕理伦片免费看 | 欧美视频亚洲视频 | 日本人做爰全过程 | 伊人精品久久 |