Я задаю несколько вопросов LeetCode, и я не уверен, почему мой вектор изменяет размеры.Вот соответствующие части моего кода:
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 (), когда я печатаю вектор частоты в виде строки, он продолжает удваиваться: output
Я не уверен, почему это так.Я хотел, чтобы вектор оставался размером 26 и менял частоты на месте, пока я повторяю «s».Вместо этого он добавляет новый частотный массив к моему вектору.Я знаю, что могу исправить это, используя обычный массив, но подумал, что смогу использовать это как возможность обучения.Почему это происходит и что я могу сделать, чтобы исправить это без использования другой структуры данных?