添加到阵列/变量数组

时间:2015-12-12 22:37:42

标签: c++ arrays class vector

我有一个编写程序的任务,该程序在不使用向量的情况下将元素添加到数组中。

她的大部分课程都是复制粘贴的c ++ .com教程,我不知道如何开始这样做。

我在网上找到的所有信息都建议只使用向量,甚至她基本上只是说在这个任务的上下文之外使用向量。

1 个答案:

答案 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;
}