c++ - remix - smart contracts ethereum
¿Cómo actualizar std:: map después de usar el método find? (4)
Puede usar std::map::at
función de miembro, devuelve una referencia al valor asignado del elemento identificado con la tecla k.
std::map<char,int> mymap = {
{ ''a'', 0 },
{ ''b'', 0 },
};
mymap.at(''a'') = 10;
mymap.at(''b'') = 20;
¿Cómo actualizar el valor de una clave en std::map
después de usar el método find
?
Tengo un mapa y una declaración de iterador como esta:
map <char, int> m1;
map <char, int>::iterator m1_it;
typedef pair <char, int> count_pair;
Estoy usando el mapa para almacenar el número de apariciones de un personaje.
Estoy usando Visual C ++ 2010.
También puedes hacer esto-
std::map<char, int>::iterator it = m.find(''c'');
if (it != m.end())
(*it).second = 42;
Yo usaría el operador [].
map <char, int> m1;
m1[''G''] ++; // If the element ''G'' does not exist then it is created and
// initialized to zero. A reference to the internal value
// is returned. so that the ++ operator can be applied.
// If ''G'' did not exist it now exist and is 1.
// If ''G'' had a value of ''n'' it now has a value of ''n+1''
Entonces, al usar esta técnica, es muy fácil leer todo el carácter de una secuencia y contarlos:
map <char, int> m1;
std::ifstream file("Plop");
std::istreambuf_iterator<char> end;
for(std::istreambuf_iterator<char> loop(file); loop != end; ++loop)
{
++m1[*loop]; // prefer prefix increment out of habbit
}
std::map::find
devuelve un iterador al elemento encontrado (o al end()
si el elemento no se encontró). Siempre que el map
no sea const, puede modificar el elemento al que apunta el iterador:
std::map<char, int> m;
m.insert(std::make_pair(''c'', 0)); // c is for cookie
std::map<char, int>::iterator it = m.find(''c'');
if (it != m.end())
it->second = 42;