gpt4 book ai didi

c++ - 获取 vector 元素时出错

转载 作者:行者123 更新时间:2023-11-28 04:06:06 25 4
gpt4 key购买 nike

我正在尝试创建一个函数,它接受一个字符串并将字符串的元素放入一个 vector 中,唯一的条件是省略重复的连续元素,例如:“AABBC”-> ['A', 'B','C']。我的代码如下

std::vector<char> uniqueInOrder(const std::string& iterable){
std::vector<char> result;
for(int i = 0; i <= iterable.size(); ++i)
{
if(i==0 || result[i-1] != iterable[i]){
result.push_back(iterable[i]);
}else{continue;}

}
return result;

}
int main(){
auto result = uniqueInOrder("AABBC");
for(auto val: result){std::cout << val <<"\n";}
return 0;
}

函数的预期输出是:['A', 'B', 'C']实际输出为:['A', 'B', B', 'C']我不明白为什么它不起作用。显然,当我在 if 语句中得到 result[i] 元素时,当内部应该已经有一个元素时,它会得到“无”。

最佳答案

您对结果的索引是错误的。 iiterable 的索引,但您使用 i - 1 作为 result 的索引。当你到达循环的第四次迭代时,你查看 result[2](result 的第三个元素),但 result 只有 2 个元素; {'A', 'B'},所以你没有得到任何有用的东西(未定义的行为),当然也不是你期望的 'B'

result[i-1] 替换为 result.back() 以便它始终读取最后一个元素。

关于c++ - 获取 vector 元素时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58696373/

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