我正在尝试使用forward_list创建一个alpabethic排序列表。计划是将所有元素与我想要插入到列表中的元素进行比较,如果它大于元素,则插入它。但问题是我无法想出在最后一个元素之后插入元素的方法。我用Google搜索了,我只得到答案,说我应该避开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);
}
&lt;的实施操作者:
bool Person::operator<(Person& rhs) {
if (this->firstname < rhs.firstname) {
return true;
}
else {
return false;
}
}
答案 0 :(得分:1)
我认为技巧是在循环内部你必须保持迭代器才能移动到下一个元素。例如:
Intent intent= SocketServices.makeIntent(MainActivity.this,String.valueOf(object),mDownloadHandler);
try {
startService(intent);
} catch(Exception e) {
e.printStackTrace();
}