C++ 什么是C++;我应该为频率图选择容器吗?
我有一个小项目。我想制作一个类似这样的频率图:C++ 什么是C++;我应该为频率图选择容器吗?,c++,containers,frequency,C++,Containers,Frequency,我有一个小项目。我想制作一个类似这样的频率图: a-axis 3| x 2|` x x 1| x x x 0| x x x x |`_____________` 2 4 6 7 9 b-axis 我应该使用什么容器,以及如何以最简单的方式实现它 容器还应记录零值(频率) 我发现很难纠正这个容器。有没有我可以看的示例代码?或者任何人都可以给我写一个样本,让我在这里学习 更新: 我正在考虑制作std::map key和map
a-axis
3| x
2|` x x
1| x x x
0| x x x x
|`_____________`
2 4 6 7 9 b-axis
我应该使用什么容器,以及如何以最简单的方式实现它
- 容器还应记录零值(频率)
std::map key和map
如何访问keyAndMap中的向量?
因为我不知何故不能执行keyAndMap.insert(std::make_pair(bAxis,bVec.push_back(bValue))代码>
我认为主要的问题是如何为std::map中的每个键生成唯一的向量
const int tries = 21;
std::vector<int>values;
std::map<int,std::vector<int>>keyAndMap;
for (int i = 1; i < tries; i++)
{
int n = i;
int cycle = calculate(n);
/*This next line is an error... why?*/
keyAndMap.insert(std::make_pair<int,std::vector<int>>(cycle,values.push_back(i)));
}
const int trys=21;
std::矢量值;
std::mapkeyAndMap;
for(int i=1;i
虽然如果我不知何故通过了这条线,我这里的逻辑是有缺陷的,因为向量对于每个键不是唯一的。
我画的这个漂亮的小图中的每个“x”都是通过循环中的每个过程获得的。
因此,对于每个b轴(2,4,6,7和9),应该在它们自己的std::vector中
我应该使用什么容器,如何以最简单的方式实现它
一个可能的容器是std::map
,这两个容器的类型都是int
,另外还有一个好处,就是可以对值进行排序。然后,您可以简单地通过以下方式读取值:
std::map<int, int> data;
int key;
while (std::cin >> key)
{
++data[key]; // increment the frequency of a given key*
}
它将打印一个两列的数据表
第二,更简单的方法:
您可以使用std::vector
,其中frequency
类型为int
,您的数据将是std::vector
的索引,但是,您应该知道数据的范围**,以便可以将其用作初始向量大小:
i、 e.std::vector data(5,0)
可以保存范围5
的值
然后,例如,若您的数据由整数[0,4]组成,则您可以有:
std::vector<int> data(5, 0); // five elements with initial value 0
int key;
while(std::cin >> key) // assuming key >= 0 && key < 5
{
data[key] += 1;
}
std::向量数据(5,0);//初始值为0的五个元素
int键;
while(std::cin>>key)//假设key>=0&&key<5
{
数据[键]+=1;
}
然后打印:
for (int i= 0; i < data.size(); ++i)
{
std::cout << i <<": "<< data[i] <<"\n";
}
for(int i=0;i std::cout听起来像是你想要一个std::map
请求代码通常是不受欢迎的。而且我发现有点不清楚到底是什么问题或标准是什么?一个简单的std::vector
?或者一个std::map
?你只给我们看了一张图片。你没有给出实际数据的信息您需要保留/记录的项目。a和b的可能范围是什么?如果有疑问,请选择std::vector
。只有当您有真正的理由认为这不起作用时,才寻找替代方案。经验法则很好。
for (int i= 0; i < data.size(); ++i)
{
std::cout << i <<": "<< data[i] <<"\n";
}