首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试反转C++数组,同时将其存储到新数组中

尝试反转C++数组,同时将其存储到新数组中
EN

Stack Overflow用户
提问于 2015-01-02 12:42:54
回答 2查看 126关注 0票数 0

我正在尝试反转一个数组,同时使用for循环将其存储在一个新的数组中。我在某种程度上是手动实现的,但不是通过循环实现的。下面的第一个代码使用循环,后者手动或逐字执行。

代码语言:javascript
复制
char wrd[26],rev[26];

int y,i,s;

s=strlen(wrd)-1;

for(y=0;y<s;y++) for(i=s;i>=0;i--)
{
    rev[y]=wrd[i];
}

下面是手动完成的相同操作;它是有效的,但您将获得用于填充数组其余部分的随机字符:

代码语言:javascript
复制
{
    char drw[26], wrd2[26];
    int s,i=0;

    s=strlen(wrd2)-1;

    drw[0]=wrd2[s];
    drw[1]=wrd2[s-1];
    drw[2]=wrd2[s-2];
    drw[3]=wrd2[s-3];
    drw[4]=wrd2[s-4];
    drw[5]=wrd2[s-5];
    drw[6]=wrd2[s-6];
    drw[7]=wrd2[s-7];
    drw[8]=wrd2[s-8];
    drw[9]=wrd2[s-9];
    drw[10]=wrd2[s-10];
    drw[11]=wrd2[s-11];
    drw[12]=wrd2[s-12];
    drw[13]=wrd2[s-13];
    drw[14]=wrd2[s-14];
    drw[15]=wrd2[s-15];
    drw[16]=wrd2[s-16];
    drw[17]=wrd2[s-17];
    drw[18]=wrd2[s-18];
    drw[19]=wrd2[s-19];
    drw[20]=wrd2[s-20];
    drw[21]=wrd2[s-21];
    drw[22]=wrd2[s-22];
    drw[23]=wrd2[s-23];
    drw[24]=wrd2[s-24];
    drw[25]=wrd2[s-25];

    cout << drw;
}
EN

回答 2

Stack Overflow用户

发布于 2015-01-02 12:46:45

你有两个嵌套的循环,它们不是在做你认为它们在做的事情。你只需要一个:

代码语言:javascript
复制
int y, s;

s = strlen(wrd) - 1;

for (y = 0; y<=s; y++)
{
    rev[y] = wrd[s - y];
}

别忘了终止:

代码语言:javascript
复制
rev[s + 1] = 0;
票数 3
EN

Stack Overflow用户

发布于 2015-01-02 13:27:39

由于您使用的是C++,因此请充分利用它提供的库。根据您是否希望对元素进行内存顺序访问(如果要将其作为字符串读出,您可能会这样做),您可以将std::vector与reverse一起使用,或者,如果连续访问不是问题,则可以使用list/forward_list。std::list的好处是可以直接提供reverse方法。

代码语言:javascript
复制
#include <vector>
#include <algorithm>

using namespace std;

//int main() {
    vector<char> chars;
    const char *mystr = "abcdef";
    chars.reserve(6);
    chars.assign(mystr, mystr+6); //assuming we don't want the null terminator.
    reverse(chars.begin(), chars.end());
    cout << string(&chars.front(), chars.size()) << endl;
//}

包含保留空间是为了最大化拷贝操作的性能。

此外,如果mystr被声明为字符数组(或者至少指向可写内存),您也可以简单地执行reverse(mystr, mystr+6)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27737457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档