gpt4 book ai didi

c++ - 使用 forward_list 创建字母列表

转载 作者:行者123 更新时间:2023-11-30 05:02:58 25 4
gpt4 key购买 nike

我正在尝试创建一个带有 forward_list 的按字母顺序排序的列表。计划是将所有元素与我要插入列表的元素进行比较,如果它大于一个元素,则将其插入。但问题是我想不出在最后一个元素之后插入元素的方法。我已经用谷歌搜索了,我只得到答案说我应该避免使用 forward_list...

所以问题是,我怎样才能使这项工作...

void insertOrdered(std::forward_list<Person> &l, const Person& p) {
auto i = l.begin();
if (l.empty()) {
//placing an element at the front if the list is empty
l.emplace_front(p);
return;
}
for (i; i != l.end(); ) {

if (p < *i) {
//Moving the element at position i to the position after i.
l.insert_after(i, *i);
//placing person at i
*i = p;
return;
}
else{
i++;
}
}
//Trying to insert after the last element
l.emplace_front(l.end(), p);
}

<运算符的实现:

bool Person::operator<(Person& rhs) {
if (this->firstname < rhs.firstname) {
return true;
}
else {
return false;
}
}

最佳答案

我认为诀窍在于在移动到下一个元素之前必须保留迭代器的循环内部。例如:

void insertOrdered(std::forward_list<int> &l, const Person& p) {
if (l.empty()) {
l.emplace_front(p);
return;
}
for (auto i=l.begin(); i!= l.end();) {
auto m = i; // keep the current iterator i to m.
if (p < *i) {
l.insert_after(i, *i);
*i = p;
return;
}
else {
i++; // increase the iterator i
if (i == l.end()) {
l.emplace_after(m,p); // use m to add data to the last element
return;
}
}
}
}

关于c++ - 使用 forward_list 创建字母列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49596877/

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