有关带参数的void函数的错误

时间:2016-11-18 16:37:40

标签: c++ sorting vector void

我有关于"简单"的编码问题。关于在n个整数的向量内排序什么的练习。问题是编译器不接受void作为函数sort的类型(并且它必须是void函数)。但我真的不明白为什么。对于变量,类型匹配(例如指针< - > v.begin())但是对于它没有的功能。任何帮助赞赏!这是我的代码:

Payment_ID

1 个答案:

答案 0 :(得分:0)

有一些错误。 您正在第一个for循环中开始递增,但从不重置它。因此永远不会输入第二个for循环。每个++开始改变你的迭代器的位置! (int i = 1; i< len; ++ i)的循环将转到begin plus i的当前位置,从而离开内存。 以下应该做你想要的:

#include <iostream>
#include <vector>

typedef std::vector<int>::iterator Vit;

void sort( Vit begin, Vit end){
  for(Vit pos1=begin; pos1 < end; ++pos1) {
    for(Vit pos2=pos1+1; pos2 < end; ++pos2) {
      if(*pos1 < *pos2 ) {
    int swap = *pos1;
    *pos1 = *pos2;
    *pos2 = swap;
      }
    }
  }
  std::cout<< "* ";
  for(Vit it=begin; it < end; ++it){
    std::cout<< *it<< " ";
  }
  std::cout<< "*";
  return;
}

int main(){
  int n;
  std::cin >> n;
  std::vector<int> v(n);
  for(Vit it = v.begin(); it < v.end(); ++it){
    std::cin >> *it;
  }

  sort (v.begin() , v.end());
}