2016-06-09 124 views
-4

索引是否是一個成員函數,它可以返回容器中元素的值,並且迭代器是一個可以訪問,移動和移動容器的值,這是真的嗎?索引和迭代器的區別是?

回答

1

索引(或鍵)用於查找容器中的數據。最簡單的情況是數組的整數索引,但像std::map這樣的容器幾乎可以有任何類型的索引。

迭代器是一個類,它表示一個容器中的位置。它們可以通過訪問帶有索引/鍵的容器獲得,例如iterator std::map::find(const Key& key)

迭代器和索引實際上是非常切題相關的概念。 索引不允許您以任何方式訪問容器的數據,您必須從容器調用函數,如下標運算符([])或find()

但是,即使您不再有權訪問原始容器,迭代器也可以與*->「取消引用」。有時迭代器在C++中傳遞而沒有相關的容器。它們也可以遞增和/或遞減(取決於容器)。


許多人互換使用術語「鑰匙」和「索引」,我包括在內。根據具體情況,這可能並不完全合適,但它們通常是一個等同的概念。

+0

因此,索引用於查找容器中的數據,但不能自己查找容器中的數據?那麼索引本身是做什麼的?迭代器是一個類,但索引是? – Dog

+0

@Dog索引可以是任何東西(對於某些容器);但它不是與容器有任何關聯的東西。與數組一樣:索引是一個整數。所以你可以用'x'給出'int x = 10;'來訪問一個數組的元素,但是單獨的'x'沒有任何數據連接。只有'array [x]'做。迭代器將它們連接到容器上。 – 2016-06-09 16:35:18

相關問題