gpt4 book ai didi

c++ - 如何从一个 vector 中删除最小元素并添加到另一个 vector 中,而第一个元素变为空?

转载 作者:行者123 更新时间:2023-11-28 01:33:53 25 4
gpt4 key购买 nike

如何在第一次变空时从一个 vector 中删除最小元素并添加到另一个 vector 中?`
那是行不通的:/看起来像选择排序算法

#include<iostream>
#include<vector>
using namespace std;
void print(vector<int>&vec) {
for (int i = 0; i < vec.size(); i++)
cout << vec[i] << endl;
}


int main()
{
vector<int>v1{ 458,525,255,336,258 };
int size = v1.size() - 1;
vector<int>v2;
int min = v1[0];
int i;
int ind = 0;
while (v2.size() != size) {
for (i = 1; i < v1.size(); i++)
{
if (v1[i] < min)
{
min = v1[i];
ind = i;
}
}
v2.push_back(min);
v1.erase(v1.begin() + ind);
}
print(v1);
cout << " " << endl;
print(v2);

}

最佳答案

它应该是这样的:

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

int main() {

std::vector<int> v1{ 458, 525, 255, 336, 258 };
std::vector<int> v2;

while ( v1.size() ) {

auto m = std::min_element(v1.begin(), v1.end());
v2.push_back(*m);
v1.erase(m);

}

for (auto v : v1) std::cout << v << " "; std::cout << "\n";
for (auto v : v2) std::cout << v << " "; std::cout << "\n";

return 0;

}

关于c++ - 如何从一个 vector 中删除最小元素并添加到另一个 vector 中,而第一个元素变为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50279064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com