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