Нужны примеры использования векторов на С++
Учитывая вектор С++, как показано ниже:
vector<double> weight;
weight.resize(128, 0);
Может ли вес использоваться как:
weight['A'] = 500.98;
weight['P'] = 455.49;
Что это значит и как использовать эти значения? Может ли кто-нибудь привести мне пример?
Ответы
Ответ 1
Литералы символов (например, "A" и "P" ) могут быть автоматически преобразованы в целые числа, используя их значения ASCII. Итак, "A" - 65, "B" - 66 и т.д.
Таким образом, ваш код будет таким же, как:
weight[65] = 500.98;
weight[80] = 455.49;
Причина, по которой вы когда-либо хотели бы сделать это, - это то, что массив весов имеет какое-то отношение к символам. Если это так, то присвоение весов литералу символа делает код более читаемым, чем присвоение целому числу. Но это просто для "документации", компилятор видит его как целые числа в любом случае.
Ответ 2
Код эквивалентен:
weight[65] = 500.98;
weight[80] = 455.49;
Что, конечно, работает только в том случае, если вектор содержит не менее 81 элемента.
Ответ 3
Вы не должны.
Используйте std::map
для этой цели
Например
std::map<char,double> Weight;
Weight.insert(std::make_pair('A',500.98)); //include <algorithm>
Weight.insert(std::make_pair('P',455.49));
std::cout<< Weight['A']; //prints 500.98
Вы также можете выполнять итерацию по map
с помощью std::map<char,double>::iterator
Например
std::map<char,double>::iterator i = Weight.begin();
for(; i != Weight.end(); ++i)
std::cout << "Weight[" << i->first << "] : " << i->second << std::endl;
/*prints
Weight['A'] : 500.98
Weight['P'] : 455.49
*/
Ответ 4
Итак, я понимаю, что литералы char превращаются в целые числа. Поддерживает ли С++ расширенную таблицу ASCII?
Например, если у меня был
char * blah = 'z'+'z';
что будет????
например.
'z' = 122 in ASCII
поэтому
'z'+'z' = 244 ?? or ??
Ответ 5
Если вы хотите этого, вы можете использовать std::map<char, double>
. Технически это также можно было бы использовать с помощью std::vector<double>
, но было бы всевозможные интегральные преобразования от символов к целым числам, и программа просто путала бы.