需要关于C ++向量使用的示例

时间:2010-08-14 13:41:25

标签: c++ vector

给出C ++向量如下:

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

可以使用重量:

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

这意味着什么,以及如何使用这些值?谁能举个例子呢?

5 个答案:

答案 0 :(得分:7)

字符文字(如'A'和'P')可以使用ASCII值自动转换为整数。所以'A'是65,'B'是66,等等。

所以你的代码与:

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

你想要这样做的原因是权重数组与字符有关。如果是这样,那么为字符文字赋予权重会使代码比分配给整数更具可读性。但它只是用于“文档”,编译器将其视为整数。

答案 1 :(得分:5)

代码相当于:

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

当然,只有当向量包含至少81个元素时才有效。

答案 2 :(得分:1)

你不应该。 为此目的使用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
*/

答案 3 :(得分:1)

所以我理解char文字变成了Integers。 C ++是否支持扩展的ASCII表? 例如,如果我有一个

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

会发生什么? 例如

'z' = 122 in ASCII

因此

'z'+'z' = 244  ?? or ?? 

答案 4 :(得分:0)

如果您需要,可以使用std::map<char, double>。从技术上讲,也可以使用std::vector<double>,但是从字符到整数会有各种各样的整数转换,程序会让人感到困惑。

相关问题