gpt4 book ai didi

c++ - 为什么我的 C++ vector 会调整大小并附加一个新 vector 而不是原地更改?

转载 作者:太空宇宙 更新时间:2023-11-04 12:42:50 25 4
gpt4 key购买 nike

我正在做一些 LeetCode 问题,但我不确定为什么我的 vector 会调整大小。这是我的代码的相关部分:

    void turnToString(std::vector<int> & charFreq, std::string & freqStr)
{
for(int i : charFreq)
freqStr.append(std::to_string(i));
std::cout << freqStr << std::endl;
}

std::vector<int> charFreq (26,0);
for(int i = 0, j = p.size() - 1; j < s.size(); i++, j++)
{
charFreq[s[j] -'a']++;
turnToString(charFreq, str);
if(str == freqStr)
res.push_back(i);
charFreq[s[i]-'a']--;
}

一切都编译得很好,但在我的 turnToString() 函数中,当我将频率 vector 打印为字符串时,它一直加倍: output

我不确定为什么会这样。我的意图是让 vector 保持 26 的大小,并在我遍历“s”时改变频率。相反,它将一个新的频率数组附加到我的 vector 中。我知道我可以只使用常规数组来解决这个问题,但我想我会把它作为一个学习机会。为什么会发生这种情况?如果不使用不同的数据结构,我可以做些什么来修复它?

最佳答案

对于 charFreq 中的每个条目,您将该条目附加到 freqStr:

freqStr.append(std::to_string(i));

所以str(函数外)会越来越大。

关于c++ - 为什么我的 C++ vector 会调整大小并附加一个新 vector 而不是原地更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53283410/

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