C++void反向函数

C++ void reverse function

本文关键字:函数 C++void      更新时间:2023-10-16

我们正在将基数10转换为另一个基数(B)中的数字。我的void反转函数有问题,它不会反转数字的顺序。

 string convertToBaseB(int num, int b){
int digit;
stringstream answer;
string x="";
    while(num>0){
    digit=num%b;
    num/=b;
    answer<<digit;
}
    return answer.str();}
void reverse(int x[],int size){//reversing the 
for(int k=0; k<size/2; k++){
    int temp=x[k];
    x[k]=x[size-k-1];
    x[size-k-1]=temp;}
}

您的反向函数运行良好。然而,对我来说,它看起来不像C++……在C++中,我会有一个向量,然后做:

std::vector<int> arr;
//... fill arr
std::swap_ranges(&arr[0], &arr[arr.size()/2], arr.rbegin());

如果你想坚持你的for循环,至少可以像这个一样使用std::swap

void reverse(int x[],int size) { 
    for(int k=0; k<size/2; k++)
        std::swap(x[k], x[size-k-1]);
}

适用于我:

#include <iostream>
using namespace std;
void reverse(int x[],int size)
{
  for(int k=0; k<size/2; k++)
  {
    int temp=x[k];
    x[k]=x[size-k-1];
    x[size-k-1]=temp;
  }
}
int main()
{
  const int sz = 9;
  int* digits;
  digits = new int[sz];
  for (int i=0; i < sz; ++i)
  {
    digits[i] = i;
  }
  reverse(digits, sz);
  for (int i=0; i < sz; ++i)
  {
    cout<<digits[i]<<" ";
  }
  cout<<endl;
}