Нужны примеры использования векторов на С++

Учитывая вектор С++, как показано ниже:

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>, но было бы всевозможные интегральные преобразования от символов к целым числам, и программа просто путала бы.