Самый простой способ, который не сильно меняет ваш код, это просто использовать ссылку вместо экземпляра.Итак:
SomeStruct & info = myVector[i];
Следующий простой способ - это перейти от использования цикла с индексом, например:
for (std::vector<SomeStruct>::iterator it = myVector.begin(); it != myVector.end(); ++it)
{
SomeStruct & info = *it;
// do stuff here
}
С STL вы можете пойти еще дальше, особенно если выиметь компилятор с поддержкой C ++ 11, например:
std::for_each(std::begin(myVector), std::end(myVector), [](SomeStruct & info) { /* do stuff here */ });
Также не имеет отношения к вашему вопросу напрямую, но если вы добавите метод в структуру, которая вычисляет частоту, код станет намного чище, дляэкземпляр, следующий из последнего примера, который вы можете сделать:
std::for_each(std::begin(myVector), std::end(myVector), std::mem_fun(&SomeStruct::calculateFrequency));
Это также будет работать без компилятора C ++ 11, если вы измените вызовы на std::begin(myVector)
с myVector.begin()
и то же самое для end.