【问题标题】:Reversing Array Without Using Array Size在不使用数组大小​​的情况下反转数组
【发布时间】:2015-04-08 17:46:18
【问题描述】:

给定数组的指针和数组的大小,反转数组相对容易。

但我的问题是:是否可以仅给定一个指向数组的指针来反转数组?

(在 C++ 中顺便说一句)

编辑

这显然是在洛克希德马丁公司的一次采访中提出的问题。见here

【问题讨论】:

  • 不,因为答案显然取决于数组的结束位置。

标签: c++ arrays pointers reverse


【解决方案1】:

一般来说,答案是否。 只有所谓的终止数组才有可能,例如以 NULL 终止的字符数组:

void reverse(char* str)
{
   int end = -1;
   int front = -1;

   while (str[++end] != NULL);  

   while (--end > ++front)
   {   
      char temp = str[end];
      str[end] = str[front];
      str[front] = temp;
   }
}

【讨论】:

    【解决方案2】:

    不,这是不可能的。如果您不知道数组的大小,则无法反转它。

    【讨论】:

      【解决方案3】:

      如果你为你的数组元素类型定义一个“终结符”,就像 \0 用于 char 数组一样,这是可能的。您应该始终以该值结束数组,否则您将获得运行时错误。但是使用大小或避免使用数组并使用向量总是更好,因为您使用的是 c++ 而不是 c。

      【讨论】:

        【解决方案4】:

        不。在不知道大小的情况下,您不能使用迭代器来反转它,如果不使用迭代器并且不知道大小,就不可能反转该特定数组。您必须声明另一个数组,将第一个数组中的内容复制到新数组中,然后对新数组执行内容反转。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-10-14
          • 1970-01-01
          • 2015-07-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-30
          相关资源
          最近更新 更多