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

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

vector<double> weight;
weight.resize(128, 0);      

Можно ли использовать вес как:

weight['A'] = 500.98;
weight['P'] = 455.49;

Что это значит и как использовать эти значения? Кто-нибудь может дать мне пример?

11
задан tshepang 25 July 2013 в 15:20
поделиться

5 ответов

Итак, я понимаю, что символьные литералы превращаются в целые числа. Поддерживает ли C ++ расширенную таблицу ASCII ?? Например, если бы у меня был

char * blah = 'z'+'z';

, что бы случилось ??? например.

'z' = 122 in ASCII

поэтому

'z'+'z' = 244  ?? or ?? 
1
ответ дан 3 December 2019 в 08:28
поделиться

Код эквивалентен:

weight[65] = 500.98;
weight[80] = 455.49;

Что, конечно, работает, только если вектор содержит не менее 81 элемента.

5
ответ дан 3 December 2019 в 08:28
поделиться

Не стоит. Для этой цели используйте 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

Вы также можете перебирать карту , используя std :: map :: итератор

Например,

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
*/
1
ответ дан 3 December 2019 в 08:28
поделиться

Символьные литералы (например, «A» и «P») могут автоматически преобразовываться в целые числа с использованием их значений ASCII. Итак, «A» - 65, «B» - 66 и т. Д.

Итак, ваш код такой же, как:

weight[65] = 500.98;
weight[80] = 455.49;

Причина, по которой вы когда-либо хотели бы это сделать, заключается в том, что массив весов имеет какое-то отношение к символам . Если это так, то присвоение весов символьному литералу делает код более читабельным, чем присвоение целому числу. Но это просто для «документации», компилятор в любом случае видит это как целые числа.

7
ответ дан 3 December 2019 в 08:28
поделиться

Если вы этого хотите, вы можете использовать std :: map . Технически, можно было бы также использовать std :: vector , но там были бы всевозможные целочисленные преобразования символов в целые числа, и программа просто сбивала бы с толку.

0
ответ дан 3 December 2019 в 08:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: