gpt4 book ai didi

c++ - 分配一个我不想等于任何可能输入的变量是什么?

转载 作者:行者123 更新时间:2023-12-03 10:05:16 25 4
gpt4 key购买 nike

问题是

Implement the function unique_in_order which takes as argument asequence and returns a list of items without any elements with thesame value next to each other and preserving the original order ofelements.

For example:

uniqueInOrder("AAAABBBCCDAABBB") == {'A', 'B', 'C', 'D', 'A', 'B'}

uniqueInOrder("ABBCcAD") == {'A', 'B', 'C', 'c', 'A', 'D'}

uniqueInOrder([1,2,2,3,3]) == {1,2,3}


现在我的解决方案是
template <typename T> 
std::vector<T> uniqueInOrder(const std::vector<T>& iterable){
std::vector<T> unique_set;
T last = 0;
for(auto & element : iterable) {
if(element != last) {
unique_set.push_back(element);
}
last = element;
}
return unique_set;
}
std::vector<char> uniqueInOrder(const std::string& iterable){
std::vector<char> unique_set;
char last = 0;
for(auto & element : iterable) {
if(element != last) {
unique_set.push_back(element);
}
last = element;
}
return unique_set;
}
问题是有时第一个元素是 0。我可以最后分配什么永远不会匹配输入?我尝试使用 NULL 但我认为无论如何都编译为 0。

最佳答案

有一种算法可以做到这一点,称为 std::unique_copy

template <typename T> 
std::vector<T> uniqueInOrder(const std::vector<T>& iterable){
std::vector<T> unique_set;
std::unique_copy(iterable.begin(), iterable.end(), std::back_inserter(unique_set));
return unique_set;
}

// same thing for std::string
std::vector<char> uniqueInOrder(const std::string& iterable){
std::vector<char> unique_set;
std::unique_copy(iterable.begin(), iterable.end(), std::back_inserter(unique_set));
return unique_set;
}

关于c++ - 分配一个我不想等于任何可能输入的变量是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65144425/

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