void clist<T>::deduplicate(clist<T> my_list) {
    std::unordered_set<T> my_set {};
    for (auto curr = my_list.begin(); curr != my_list.end(); ++curr) {
        if(!my_set.insert(*curr).second) {
            my_list.erase(curr);
        }
    }
    return;
}
bool clist<T>::is_palindrome(clist<T> a) {
    auto f = a.begin();
    auto b = --a.end();
    bool ispalindrome = true;
    while ((f != b)&&(ispalindrome)) {
        if (*f != *b) {
            ispalindrome = false;
            return ispalindrome;
        }
        ++f;
        --b;
    }
    return true;
}
Exemplo n.º 3
0
void testListRemove()
{
	 while(mylist.size() <10)
	{
		mylist.insert(mylist.end(),mylist.size());
	}
	print("原始数组");
	mylist.remove(char(2));
	print("删除char(2)");
	mylist.remove(char(2));
	print("删除char(2)");
	mylist.remove_if(compare);//删除满足compare条件的元素 compate must return bool
	print("删除满足条件之后的数组元素");
}
clist<T> clist<T>::sumlists(clist<T> a, clist<T> b) {
    clist<T> new_list {};
    auto acurr = a.begin();
    auto bcurr = b.begin();
    bool carryover = false;
    while ((acurr != a.end()||(bcurr!=b.end()))) {
        auto result = (*acurr)*(acurr != a.end()) + (*bcurr)*(bcurr != b.end());
        new_list.push_back(carryover + (result % 10));
        if (result >= 10) {
            carryover = true;
        } else {
            carryover = false;
        }
        if(acurr != a.end()) {
           ++acurr;
        }
        if(bcurr != b.end()) {
            ++bcurr;
        }
    }
    return new_list;
}