鉴于C ++向量如下:
vector<double> weight;
weight.resize(128, 0);
重量可以用作:
weight['A'] = 500.98;
weight['P'] = 455.49;
这意味着什么,以及如何使用这些值?有人能举个例子吗?
鉴于C ++向量如下:
vector<double> weight;
weight.resize(128, 0);
重量可以用作:
weight['A'] = 500.98;
weight['P'] = 455.49;
这意味着什么,以及如何使用这些值?有人能举个例子吗?
字符文字(如“A”和“P”)可以使用ASCII值自动转换为整数。所以'A'是65,'B'是66,等等。
所以你的代码是这样的:
weight[65] = 500.98;
weight[80] = 455.49;
你想要这样做的原因是权重数组与字符有关。如果是这样,那么为字符文字赋予权重会使代码比分配给整数更具可读性。但它只是用于“文档”,编译器将其视为整数。
字符文字(如“A”和“P”)可以使用ASCII值自动转换为整数。所以'A'是65,'B'是66,等等。
所以你的代码是这样的:
weight[65] = 500.98;
weight[80] = 455.49;
你想要这样做的原因是权重数组与字符有关。如果是这样,那么为字符文字赋予权重会使代码比分配给整数更具可读性。但它只是用于“文档”,编译器将其视为整数。
代码相当于:
weight[65] = 500.98;
weight[80] = 455.49;
当然,只有当矢量至少包含81个元素时才有效。
所以我理解char文字变成了Integers。 C ++是否支持扩展的ASCII表? 例如,如果我有一个
char * blah = 'z'+'z';
会发生什么 ??? 例如。
'z' = 122 in ASCII
因此
'z'+'z' = 244 ?? or ??
你不应该。
使用 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
*/
如果你想要这个,你可以使用 std::map<char, double>
。从技术上讲,也可以使用a std::vector<double>
,但是从字符到整数会有各种各样的整数转换,程序会让人感到困惑。