共用方式為


ref_view class (C++標準連結庫)

參考屬於另一個範圍之項目的檢視。

語法

template<std::ranges::range R>
    requires std::is_object_v<R>
class ref_view : public ranges::view_interface<ref_view<R>>;

範本參數

R
要參考的範圍。

成員

成員函式 說明
建構函式C++20 ref_view建構 。
baseC++20 取得基礎範圍的參考。
beginC++20 取得第一個專案的反覆運算器。
dataC++20 取得參考範圍中第一個專案的指標。
emptyC++20 測試這 ref_view 是否為空白。
endC++20 取得這個 ref_view結尾的 sentinel。
sizeC++20 取得項目數目。 基礎範圍必須滿足 sized_range
繼承自 view_interface 說明
backC++20 取得最後一個專案。
frontC++20 取得第一個專案。
operator[]C++20 取得位於指定位置的專案。
operator boolC++20 測試這 ref_view 是否不是空的。

檢視特性

如需下列專案的描述,請參閱 檢視類別特性

特性 描述
範圍配接器 views::allviews::common
基礎範圍 必須滿足 input_range
項目類型 與基礎範圍相同
檢視反覆運算器類別 與基礎範圍相同
大小 只有在基礎範圍滿足時才 sized_range
const-iterable Yes
通用範圍 只有在基礎範圍滿足時才 common_range
借用範圍 Yes

需求

標頭: <ranges> (自C++20起)

命名空間std::ranges

需要編譯程式選項:/std:c++20或更新版本。

建構函式

建構的實例 ref_view

// construct a ref_view from a range
template<different-from<ref_view> R>
constexpr ref_view(R&& rg);

參數

rg
要參考的範圍。

如需範本參數類型的相關信息,請參閱 範本參數

傳回值

ref_view 執行個體。

備註

建立 ref_view 的最佳方式是使用 views::all 範圍配接器。 範圍配接器是建立檢視類別的預定方式。 如果您想要建立自己的自定義檢視類型,則會公開檢視類型。

ref_view適用於將容器轉換成檢視。 例如,您可以使用 ref_view 將 轉換成 vector 檢視,這讓傳遞向量元素的成本較低。

範例: ref_view

// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>

int main()
{
    std::vector<int> v = {1,2,3};
    auto refView = std::views::all(v);
    std::cout << &refView[1] << " : " << &v[1]; // outputs two identical memory addresses, e.g. 00000239AFAFDF90 : 00000239AFAFDF90
    refView[0] = 10; // modifies v[0]
    std::cout << "\n" << v[0]; // 10
}
00000239AFAFDF90 : 00000239AFAFDF90
10

base

取得基礎範圍的複本。

constexpr R& base() const;

參數

無。

傳回值

基礎範圍。

begin

取得 中第一個專案的 ref_view反覆運算器。

constexpr iterator_t<R> begin() const;

參數

無。

傳回值

指向這個 ref_view中第一個專案的反覆運算器。

具有元素 10、20 和 30 的向量圖片。第一個元素包含 10,且標示為 begin()。最後一個專案包含 30 個,且標示為「最後一個專案」。最後一個專案後面的虛方塊表示 sentinel 且標示為 end()。

data

取得這個 ref_view中第一個專案的指標。 範圍中的項目必須是連續的。

constexpr auto data() const requires contiguous_range<R>;

參數

無。

傳回值

第一個專案的指標。

empty

測試這 ref_view 是否為空白。

constexpr bool empty() const

參數

無。

傳回值

如果 ref_view 不包含任何專案,則傳true回 。 否則為 false

end

取得這個 ref_view結尾的 sentinel。

constexpr sentinel_t<R> end() const

傳回值

在這個 中 ref_view最後一個項目後面的 sentinel :

具有元素 10、20 和 30 的向量圖片。第一個元素包含 10,且標示為 begin()。最後一個專案包含 30 個,且標示為「最後一個專案」。最後一個專案後面的虛方塊表示 sentinel 且標示為 end()。

size

取得項目數目。

constexpr auto size() const requires sized_range<R>

參數

無。

傳回值

ref_view 中的項目數。

另請參閱

<ranges>
all 範圍配接器
檢視類別