移动数组中字符串的位置

时间:2011-05-01 16:08:59

标签: c++ arrays string

int moveToEnd(string a[], int n, int pos);
  

通过将所有元素复制到左侧一个位置后消除位置pos处的项目。将因此消除的项目放入数组的最后位置。返回移动到末尾的项目的原始位置。这是一个例子:

string actors[5] = { "peter", "lois", "meg", "chris", "stewie" };
int j = moveToEnd(actors, 5, 1);  // returns 1
// actors now contains:  "peter"  "meg"  "chris"  "stewie"  "lois"

这是我到目前为止所做的:

int moveToEnd(string a[], int n, int pos)
{int i = 0;
int initial;
int initial2;
int initial3;
for (i=0; i<n; i++)
    {if (i<pos)
        initial=i-1;
    if (i>pos)
        initial2=i-1;
    else 
        pos + (n-pos);
}}

这是完全错误的,但我一直试图弄清楚如何将位置移动到最后,而不是将所有其他元素移到左边。

2 个答案:

答案 0 :(得分:1)

string save = arr[pos];

for (int i = pos; i < n - 1; i++)
   arr[i] = arr[i + 1];

arr[n - 1] = save;

答案 1 :(得分:1)

您不需要第二个参数,因为您可以使用a.length

获取数组的长度

基本逻辑是:

  • 将元素a[pos]存储在临时String变量中。
  • a[pos]迭代到a[a.length - 2],将a[pos + 1]存储到a[pos]
  • 将临时String存储到a[a.length - 1]