11
會員begin有兩個重載,其中一個是const_iterator begin() const;
。還有cbeginconst_iterator cbegin() const noexcept;
。他們兩人都返回const_iterator
到列表的開頭。有什麼不同?cbegin和vector之間的區別是什麼?
會員begin有兩個重載,其中一個是const_iterator begin() const;
。還有cbeginconst_iterator cbegin() const noexcept;
。他們兩人都返回const_iterator
到列表的開頭。有什麼不同?cbegin和vector之間的區別是什麼?
begin
將返回iterator
或const_iterator
,具體取決於所調用對象的常量限定。
cbegin
將無條件返回const_iterator
。
std::vector<int> vec;
const std::vector<int> const_vec;
vec.begin(); //iterator
vec.cbegin(); //const_iterator
const_vec.begin(); //const_iterator
const_vec.cbegin(); //const_iterator
就是這樣?所以實際上,我們有兩個函數在const對象上表現完全相同......它是否有意義? – user3663882
是的,我明白了,這是有道理的。謝謝。 – user3663882
這是爲了靈活性。如果你知道你需要一個'const_iterator',調用'cbegin'。如果你知道你需要一個'iterator',調用'begin',如果它無效,你會得到一個錯誤。如果您不在意,請致電'begin'。 – TartanLlama