web-dev-qa-db-ja.com

cbeginとbegin for vectorの違いは何ですか?

メンバー begin には2つのオーバーロードがあり、そのうちの1つはconst_iterator begin() const;です。 cbeginconst_iterator cbegin() const noexcept;もあります。どちらもリストの先頭にconst_iteratorを返します。違いは何ですか?

35
user3663882

beginは、呼び出されたオブジェクトのconst-qualificationに応じて、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
39
TartanLlama