2
因爲現在在C++標準庫上有類似std::begin()
和std::end()
的泛型迭代器,所以我想知道爲什麼沒有std::clear()
方法來清除容器?爲什麼在C++ 11標準庫中沒有std :: clear
因爲現在在C++標準庫上有類似std::begin()
和std::end()
的泛型迭代器,所以我想知道爲什麼沒有std::clear()
方法來清除容器?爲什麼在C++ 11標準庫中沒有std :: clear
std::begin/end
的好處是它可以用於數組。但是它只能作爲數組的名稱空間作用域函數來實現。因此,在通用代碼中,最好有std::begin/end
,以便通用代碼在需要begin/end
時無需決定是否需要使用名稱空間範圍或成員函數。
但我知道std::clear
沒有這種類比。它只能用於具有成員clear()
的容器。如何在通用代碼中使用它(至少不是我能想到的)並沒有困難。
感謝您的回覆。 –
此外,我可能是錯誤的,但我覺得他們需要'std :: begin'和'std :: end'的一半原因是這樣的陣列將基於循環範圍工作 – aaronman
@aaronman:其實基於範圍-for被操縱,所以即使沒有包含'',它也能正常工作。 –