gpt4 book ai didi

c++ - 结构 vector (copy_n 和归并排序)

转载 作者:行者123 更新时间:2023-11-28 05:26:59 24 4
gpt4 key购买 nike

我有一个结构和结构 vector :

struct S
{
int Efficiency;
int Number;
};

std::vector<S> Empl;

我尝试使用 copy_n 输入 Empl.Efficiency:

std::copy_n(std::istream_iterator<int>(std::cin), NumberOfEmpl, std::back_inserter(Empl.Efficiency));

但是总是出现vector不包含Efficiency的错误。如何输入 Empl.Efficiency?

还有如果我使用归并排序,如何按效率排序并保存对效率和数量?

void merge_sort(BidirIt first, BidirIt last, Compare cmp = Compare{})
{
const auto n = std::distance(first, last);
if (n > 1) {
const auto middle = std::next(first, n / 2);
merge_sort(first, middle, cmp);
merge_sort(middle, last, cmp);
std::inplace_merge(first, middle, last, cmp);
}
}
...
merge_sort(std::begin(Empl.Efficiency), std::end(Epml.Efficiency));

最佳答案

这行不通:

std::copy_n(std::istream_iterator<int>(std::cin), NumberOfEmpl, std::back_inserter(Empl.Efficiency));

因为 Empl 是一个 vector ,而 Efficiency 是该 vector 内部结构的成员。你不能在 C++ 中以这种方式“广播”。但是,您可以这样做:

std::copy_n(std::istream_iterator<int>(std::cin), NumberOfEmpl, std::back_inserter(Empl));

如果你实现:

std::ostream& operator >>(std::ostream& in, S& empl) {
return in >> empl.Efficiency;
}

也就是说,您为您的结构创建一个 istream 运算符,它读取效率并忽略数字。

关于c++ - 结构 vector (copy_n 和归并排序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40342755/

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