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