C++中std::distance使用方法示例
std::distance
是 C++ 標(biāo)準(zhǔn)庫(kù)中的一個(gè)函數(shù),用于計(jì)算兩個(gè)迭代器之間的距離,即從一個(gè)迭代器到另一個(gè)迭代器的元素個(gè)數(shù)。它可以用于各種容器的迭代器(如 std::vector
、std::list
等)。
語(yǔ)法
#include <iterator> std::distance(iterator1, iterator2);
參數(shù):
iterator1
:起始迭代器。iterator2
:結(jié)束迭代器。
返回值:
- 返回
iterator1
和iterator2
之間的元素個(gè)數(shù)(即它們之間的距離)。
使用方式
以下是一個(gè)簡(jiǎn)單的示例,演示如何使用 std::distance
:
#include <iostream> #include <vector> #include <iterator> // std::distance int main() { std::vector<int> vec = {10, 20, 30, 40, 50}; // 獲取兩個(gè)迭代器之間的距離 auto it1 = vec.begin(); auto it2 = vec.end(); // 計(jì)算從 it1 到 it2 的距離 std::cout << "Distance between it1 and it2: " << std::distance(it1, it2) << std::endl; // 獲取元素的索引位置 auto it3 = vec.begin() + 2; // 指向第三個(gè)元素 std::cout << "Distance from begin to it3: " << std::distance(it1, it3) << std::endl; return 0; }
解釋
std::distance(it1, it2)
:返回it1
到it2
之間的元素個(gè)數(shù)。it1
是指向容器vec
開(kāi)始位置的迭代器,it2
是指向容器vec
結(jié)束位置的迭代器(即vec.end()
)。- 返回值是
5
,表示it1
到it2
之間有 5 個(gè)元素。
示例輸出:
Distance between it1 and it2: 5
Distance from begin to it3: 2
其他說(shuō)明:
時(shí)間復(fù)雜度:std::distance
的時(shí)間復(fù)雜度與容器類型有關(guān)。如果是隨機(jī)訪問(wèn)迭代器(如 std::vector
),時(shí)間復(fù)雜度為 O(1)。如果是雙向或前向迭代器(如 std::list
),時(shí)間復(fù)雜度為 O(n),其中 n 是兩個(gè)迭代器之間的元素個(gè)數(shù)。
注意:對(duì)于非隨機(jī)訪問(wèn)的容器(如 std::list
或 std::set
),std::distance
可能會(huì)涉及到迭代器的逐個(gè)遍歷,因此效率較低。
總結(jié)
std::distance
是一個(gè)用于計(jì)算兩個(gè)迭代器之間元素個(gè)數(shù)的函數(shù),常用于獲取容器中兩個(gè)元素之間的索引位置或計(jì)算偏移量。
到此這篇關(guān)于C++中std::distance使用方法示例的文章就介紹到這了,更多相關(guān)C++ std::distance內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Qt中QSettings配置文件的讀寫(xiě)和應(yīng)用場(chǎng)景詳解
這篇文章主要給大家介紹了關(guān)于Qt中QSettings配置文件的讀寫(xiě)和應(yīng)用場(chǎng)景的相關(guān)資料,QSettings能讀寫(xiě)配置文件,當(dāng)配置文件不存在時(shí),可生成配置文件,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10C語(yǔ)言中的結(jié)構(gòu)體內(nèi)嵌函數(shù)用法
這篇文章主要介紹了C語(yǔ)言中的結(jié)構(gòu)體內(nèi)嵌函數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02用c語(yǔ)言實(shí)現(xiàn)2000內(nèi)既能被3整除又能被7整除的個(gè)數(shù)
本篇文章是對(duì)使用c語(yǔ)言實(shí)現(xiàn)2000內(nèi)既能被3整除又能被7整除的個(gè)數(shù),用實(shí)例進(jìn)行了分析說(shuō)明,需要的朋友參考下2013-05-05C++ vector及實(shí)現(xiàn)自定義vector以及allocator和iterator方式
這篇文章主要介紹了C++ vector及實(shí)現(xiàn)自定義vector以及allocator和iterator方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08