Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 交换数组/向量中的所有最小数和最大数_C++_Arrays_Sorting_Vector - Fatal编程技术网

C++ 交换数组/向量中的所有最小数和最大数

C++ 交换数组/向量中的所有最小数和最大数,c++,arrays,sorting,vector,C++,Arrays,Sorting,Vector,我试图制作一个程序,交换数组或向量中所有最大和最小的数字。我提出了一个程序,但由于某种原因,我无法调试它来解决问题。它没有打印矢量,我也不知道问题出在哪里。谁能帮帮我吗 #包括 #包括 #包括 使用名称空间std; int main() { int n; cin>>n;//大小输入 向量arr; 对于(int i=0;i>输入; arr.push_back(输入); } 向量arr1=arr;//复制向量 排序(arr1.begin(),arr1.end());//对新向量进行排序 int i

我试图制作一个程序,交换数组或向量中所有最大和最小的数字。我提出了一个程序,但由于某种原因,我无法调试它来解决问题。它没有打印矢量,我也不知道问题出在哪里。谁能帮帮我吗

#包括
#包括
#包括
使用名称空间std;
int main()
{
int n;
cin>>n;//大小输入
向量arr;
对于(int i=0;i>输入;
arr.push_back(输入);
}
向量arr1=arr;//复制向量
排序(arr1.begin(),arr1.end());//对新向量进行排序
int i=0,j=n-1,i1=0,j1=n-1;//i和j代表矢量arr&i1,而j1代表矢量arr1

而(i1一种更简单的方法是生成索引向量,而不是对向量排序并尝试在原始向量中查找值。例如:

#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    int n;
    std::cin >> n;
    std::vector<int> arr;
    std::vector<int> indexes;
    for (int i = 0; i < n; i++)
    {
        int input;
        std::cin >> input;
        arr.push_back(input);
        indexes.push_back(i);
    }
    std::sort(indexes.begin(), indexes.end(), [&](int a, int b) {return arr[a] < arr[b]; });
    for (int i = 0, j = n - 1; i < n / 2; i++, j--)
    {
        std::swap(arr[indexes[i]], arr[indexes[j]]);
    }
    for (int f = 0; f < n; f++)
    {
        std::cout << arr[f] << " ";
    }
    return 0;
}
#包括
#包括
#包括
int main()
{
int n;
标准:cin>>n;
std::载体arr;
std::向量索引;
对于(int i=0;i>输入;
arr.push_back(输入);
索引。推回(i);
}
排序(index.begin(),index.end(),[&](inta,intb){返回arr[a]std::如果
arr1
包含
arr
中项目的索引,那么问题的描述可能会简单得多。你所说的“交换所有最小和最大的数字”是什么意思?将输入和所需的输出作为文本,而不是作为链接图像(也不是作为代码底部的内容)包括在内.-1.打印完数组后,试着在末尾输出一个换行符。你的程序似乎完全按照你希望的方式运行。你知道,它确实运行了,但我不理解排序函数中“[&](int a,int b){return arr[a]#include <iostream> #include <algorithm> #include <vector> int main() { int n; std::cin >> n; std::vector<int> arr; std::vector<int> indexes; for (int i = 0; i < n; i++) { int input; std::cin >> input; arr.push_back(input); indexes.push_back(i); } std::sort(indexes.begin(), indexes.end(), [&](int a, int b) {return arr[a] < arr[b]; }); for (int i = 0, j = n - 1; i < n / 2; i++, j--) { std::swap(arr[indexes[i]], arr[indexes[j]]); } for (int f = 0; f < n; f++) { std::cout << arr[f] << " "; } return 0; }