Comment faire pour modifier un élément vectoriel en C++?

J'ai un vecteur de structures en C++ et je voudrais modifier chaque élément individuellement. J'ai constaté que le fait de SomeStruct info = myVector[i] me donne une copie de l'élément, donc si je le modifie rien ne sera changé. Donc maintenant je suis à la réinitialisation de l'élément comme ça: myVector[i] = info. Est-il un moyen plus efficace? Celui qui ne pourront donner lieu à une opération de copie?

C'est mon code actuel:

struct CharacterInfo {
    QChar character;
    int occurrences;
    double frequency;
};

std::vector<CharacterInfo> characterInfos;

//Some code to populate the vector

for (unsigned i = 0; i < characterInfos.size(); i++) {
    CharacterInfo info = characterInfos[i];
    info.frequency = (double)info.occurrences / (double)totalOccurrences;
    characterInfos[i] = info; //how to avoid this?
}

OriginalL'auteur laurent | 2011-11-23