使用forward_list

时间:2018-04-01 09:56:28

标签: c++ forward-list

我正在尝试使用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;
    }
}

1 个答案:

答案 0 :(得分:1)

我认为技巧是在循环内部你必须保持迭代器才能移动到下一个元素。例如:

Intent intent= SocketServices.makeIntent(MainActivity.this,String.valueOf(object),mDownloadHandler);

try {
    startService(intent);   
} catch(Exception e) {
    e.printStackTrace();
}