【发布时间】:2021-10-25 12:52:23
【问题描述】:
我在尝试为 std::array 重载运算符
std::ostream& operator<<(std::ostream& os, std::array<int> const& v1)
{
for_each(begin(v1), end(v1), [&os](int val) {os << val << " "; });
return os;
}
但编译器希望我添加有关数组大小的信息,这不会使其成为任何整数数组的通用解决方案。我知道如果我想将其用于一般类型,我将不得不使用模板,但现在我只想将其用于整数数组。
【问题讨论】:
-
只使用
std::vector<int>怎么样?我怀疑您是否追求std::array的分配性能,因此使用动态大小数组是最简单的 -
@AlexeyLarionov 我知道我可以为向量做到这一点,我只是好奇如何为 std::array 做到这一点,因为我刚刚开始了解这个集合
-
每个不同大小的数组都是不同的类型,所以你必须使用模板
-
std::array<int>不是一个类型(就像std::array<int, 4>一样)。您需要使用模板而不是普通函数。 -
顺便说一句:IMO
for (const auto & val : v1) { os << val << " "; }会更具可读性。