【问题标题】:Add to Array/Variable Array添加到数组/变量数组
【发布时间】:2015-12-12 22:37:41
【问题描述】:

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

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

我在网上找到的所有信息都建议只使用向量,甚至她也基本上说只在本作业的上下文之外使用向量。

【问题讨论】:

  • 要将元素添加到数组中,您只需 array[nextAvailableSpace] = newValue
  • 好的,谢谢 :)
  • 数组有固定数量的元素,它们是类型的一部分。您不能“添加”元素。不过,您可以动态地管理内存中的一系列对象,这正是std::vector 正在为您做的事情。
  • 我的老师字面意思是:“包含一个类函数来向数组中添加元素(5 分)。”这是复制粘贴的。
  • 我最终通过制作一个 99 点数组,并让用户将前 4 个点设置为最小值,并可以选择将更多点设置为 99。希望这会足够好。

标签: c++ arrays class vector


【解决方案1】:

听起来像是一个奇怪的任务。但这是我的看法。如果她的意思是在编译时知道大小的数组,那么您可以使用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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多