我有一个编写程序的任务,该程序在不使用向量的情况下将元素添加到数组中。
她的大部分课程都是复制粘贴的c ++ .com教程,我不知道如何开始这样做。
我在网上找到的所有信息都建议只使用向量,甚至她基本上只是说在这个任务的上下文之外使用向量。
答案 0 :(得分:0)
听起来像一个奇怪的任务。但这是我的看法。如果她的意思是在编译时知道大小的数组,那么您可以使用std::array<T,N>
。您可以使用函数add_element()
轻松地将新元素添加到数组的末尾,该函数按以下方式实现:(函数add_element_impl()
是一个不被认为直接使用的辅助函数。)
#include <array>
#include <utility>
template <typename T, std::size_t N, std::size_t ...indices>
std::array<T,N+1> add_element_impl( const std::array<T,N> & arr,
const T & elem,
std::index_sequence<indices...> )
{
return { arr[indices]..., elem };
}
template <typename T, std::size_t N>
std::array<T,N+1> add_element( const std::array<T,N> & arr,
const T & elem )
{
return add_element_impl( arr, elem, std::make_index_sequence<N>() );
}
现在您可以轻松地将元素添加到现有数组中:
#include <iostream>
int main()
{
std::array<int,2> arr2 = { 1, 2 };
std::array<int,3> arr3 = add_element( arr2, 3 );
for ( auto x : arr3 )
std::cout << x << ' ';
std::cout << std::endl;
return 0;
}