template </* ... */>
class vector {
public:
class ReverseIterator {...};
class Iterator {...};
using reverse_iterator = ReverseIterator;
using iterator = Iterator;
};
根據標準,cout不能給int賦值,請給出相關代碼。但cout可以被轉換成bool(c++11之後)或void *(c++11之前)型別。這是因為cout的類型繼承了basic_ios的一個實例,而用於實例化該實例的basic_ios類別模板定義了相關轉換操作符。即可以bool x = std::cout;
問1
reverse_iterator和iterator是兩個定義在vector類別模板內的迭代器類型。實作上可能是不同的類,如:
reverse_iterator
的迭代方向和iterator
相反。即若r1和r2指向同一个元素,r1+1
和r2-1
指向同一个元素(若有效,且它们分别重载了operator+
和operator-
)。實現迭代方向相反是透過不同的operator實現來實現的。如若迭代器內部透過指標來實現,reverse_iterator的
operator++
的实现可自减该指针,而iterator的operator++
實作可自增該指標。問2
ostream_iterator<int, char> out_iter(cout, " ");
是声明并定义一个变量,且直接初始化(direct initialize)该变量。(cout, " ")
是實際參數清單。編譯器會嘗試根據這個參數清單選擇一個建構函數,並將這些參數"傳給"該建構子。根據標準,cout不能給int賦值,請給出相關代碼。但cout可以被轉換成bool(c++11之後)或void *(c++11之前)型別。這是因為cout的類型繼承了basic_ios的一個實例,而用於實例化該實例的basic_ios類別模板定義了相關轉換操作符。即可以
bool x = std::cout;
什麼叫兩個數值。 。
reverse_iterator
和iterator
是迭代器,實質是兩個類別模板透過在類別的內部重新實作函數的不同細節來實現不同功能,但對外介面一致
實例化一個物件
out_iter
,类型是ostream_iterator<int,char>
,传入构造函数的参数是cout
和" "
「cout能給int賦值」這句話表意不明