3
나는 2 std::array
을 취하고 std::arrays
에있는 값의 평균값을 가지고 또 다른 std::array
을 반환하는 간단한 함수를 만들었습니다.템플릿을 사용하여 벡터의 평균 계산하기
template<typename T, std::size_t N>
std::array<T, N> average(const std::array<T, N>& a1, const std::array<T, N>& a2)
{
std::array<T, N> array;
for (std::size_t i = 0; i < N; ++i)
array[i] = (a1[i] + a2[i])/2;
return array;
}
완벽하게 작동합니다. 이제 N 벡터의 평균을 계산하고 싶습니다. 그래서
std::array<int, 3> a{ 1, 2, 3 };
std::array<int, 3> b{ 3, 4, 5 };
auto c = average<int, 3>(a, b); //'<int, 3>' not good, possible without?
나는 다른 방법을 생각하지 못했습니다, 누군가가 제발 도움이 될 수 있습니다 나는 또한 작동이
template<typename T, std::size_t N, typename... Ts>
std::array<T, N> average(const Ts&... args)
{
std::array<T, N> result;
for (std::size_t i = 0; i < N; ++i)
{
T addedValues = 0;
for (const auto& array : { args... })
addedValues += array[i];
result[i] = addedValues/sizeof...(args);
}
return result;
}
을했다,하지만 난 결과 템플릿 인수를 지정해야?
반복자 (시작과 끝) 또는 범위/span을 사용하면'std :: array <> '에 국한되지 않고 모든 컨테이너를 사용할 수 있습니다. 유형. – lorro
@lorro 좋은 지적, 할 것이다 :) – Rakete1111