移動迭代器

2021-07-01 22:29:18 字數 507 閱讀 7938

新標準庫中定義了一種移動迭代器(move iterator)介面卡。乙個移動迭代器通過改變給定迭代器的解引用運算子的行為來適配此迭代器。一般來說,乙個迭代器的解引用運算子返回乙個指向元素的左值。與其他迭代器不同,移動迭代器的解引用運算子生成乙個右值引用。

我們通過呼叫標準庫的make_move_iterator函式將乙個普通迭代器轉換為乙個移動迭代器。此函式接受乙個迭代器引數,返回乙個移動迭代器。

原迭代器的所有其他操作在移動迭代器中都照常工作。由於移動迭代器支援正常的迭代器操作,我們可以將一對移動迭代器傳遞給演算法。

建議:不要隨意使用移動操作

由於乙個移後源物件具有不確定的狀態,對其呼叫std::move是危險的。當我們呼叫move時,必須絕對確認移後源物件沒有其他使用者。

通過在類**中小心地使用move,可以大幅度提公升效能。而如果隨意在普通使用者**(與類實現**相對)中使用移動操作,很可能導致莫名其妙的、難以查詢的錯誤,而難以提公升應用程式效能。

迭代器 反向迭代器

c primer 中文版第四版 第273頁 9.3.2 begin和end成員 begin和end操作產生指向容器內第乙個元素和最後乙個元素的下乙個位置的迭代器,如下所示。這兩個迭代器通常用於標記包含容器中所有元素的迭代範圍。c.begin 返回乙個迭代器,它指向容器c的第乙個元素 c.end 返回...

迭代器 可迭代物件 迭代器物件

今天的學習內容有 迭代器 可迭代物件 迭代器物件 for迴圈內部原理 生成器和生成器表示式 面向過程程式設計 迭代就是指更新換代的過程,要重複進行,而且每次的迭代都必須基於上一次的結果。我們使用for迴圈的時候就是把元素從容器裡乙個個取出來,這種過程其實就是迭代。迭代器 迭代取值的工具。迭代器的作用...

C STL迭代器 插入迭代器

include stdafx.h include include include include include 演算法庫對所有在容器上的操作有個承諾 決不修改容器的大小 不插入 不刪除 有了插入迭代器,既使得演算法庫可以通過迭代器對容器插入新的元素,又不違反這一承諾,即保持了設計上的一致性。usi...