我在嘗試為std::array多載運算子<<時遇到了麻煩。我試著用其他所有集合的方式來做這件事:
std::ostream& operator<<(std: :ostream& os, std::array<int> const& v1)
{
for_each(begin(v1), end(v1), [&os](int val) {os << val << " "/span>; }) 。
return os。
}
但是編譯器希望我添加關于陣列大小的資訊,這將不會使它成為任何整數陣列的通用解決方案。我知道,如果我想讓它適用于普通型別,我就必須使用模板,但現在我只想讓它適用于整數陣列。
uj5u.com熱心網友回復:
模板不僅僅是為了 "一般型別"。std::array在它持有的型別和陣列的大小上都是模板化的。因此,如果你想讓你的運算子適用于任何大小的int陣列,你需要對它進行模板化處理:
template <std::size_t N>
std::ostream& operator<<(std::ostream& os, std::array<int, N> const& V1)
{
for_each(begin(v1), end(v1), [&os](int val) {os << val << " "/span>; }) 。
return os。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314171.html
標籤:
