C++程序设计语言练习10.5 直方图的C++表示

C程序设计语言(第2版·新版)练习题1-13 水平方向的直方图比较容易绘制,垂直方向的直方图则要困难些。编写一个程序,打印输入中单词长度的直方图。按自己的想法写的,欢迎讨论! 阅读详情

答案上的代码如下:


#include <iostream>
#include <stddef.h>
#include <cassert>
struct Histogram{
	Histogram(ptrdiff_t minval, size_t gap, size_t n_bins);
	~Histogram(){ delete[] bin_; }
	void record(ptrdiff_t);
	void output_to(std::ostream&);
private:
	ptrdiff_t const minval_, maxval_;
	size_t const gap_;
	size_t * const bin_;
	size_t n_too_small_, n_too_large_;
};

Histogram::Histogram(ptrdiff_t m, size_t g, size_t n)
:minval_(m), maxval_(m + n*g - 1), gap_(g),
bin_(new size_t[n]), n_too_small_(0), n_too_large_(0)
{
	assert(g != 0 && n != 0);
}

void Histogram::record(ptrdiff_t datapoint){
	if (datapoint < minval_)
	{
		++n_too_small_;
	}
	else if (datapoint > maxval_)
	{
		++n_too_large_;
	}
	else
		++bin_[(datapoint - minval_) / gap_];
}

void Histogram::output_to(std::ostream &output){
	output << "< " << minval_ << ": " << n_too_small_ << '\n';
	for (ptrdiff_t left = minval_; left < maxval_; left += gap_)
	{
		output << left << ".." << left + gap_ - 1 << ": "
			<< bin_[(left - minval_) / gap_] << "\n";
		output << "> " << maxval_ << ": " << n_too_large_ << '\n';
	}
}

int main()
{
	Histogram h = Histogram(1, 5, 10);
	h.output_to(std::cout);
	h.~Histogram();
	return 0;
}

莫名的析构崩溃。

编译运行环境:Centos7 x64, gcc 6.1

[chaos@localhost cpp]$ ./10.5
< 1: 0
1..5: 0
> 50: 0
6..10: 0
> 50: 0
11..15: 0
> 50: 0
16..20: 0
> 50: 0
21..25: 0
> 50: 0
26..30: 0
> 50: 0
31..35: 0
> 50: 0
36..40: 0
> 50: 0
41..45: 0
> 50: 0
46..50: 0
> 50: 0
*** Error in `./10.5': double free or corruption (fasttop): 0x00000000020b8c20 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7d023)[0x7f297e715023]
./10.5[0x400f35]
./10.5[0x400e93]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f297e6b9b15]
./10.5[0x400a89]
======= Memory map: ========
00400000-00402000 r-xp 00000000 fd:00 3124212                            /home/chaos/文档/proc/cpp/10.5
00601000-00602000 r--p 00001000 fd:00 3124212                            /home/chaos/文档/proc/cpp/10.5
00602000-00603000 rw-p 00002000 fd:00 3124212                            /home/chaos/文档/proc/cpp/10.5
020a7000-020d9000 rw-p 00000000 00:00 0                                  [heap]
7f2978000000-7f2978021000 rw-p 00000000 00:00 0 
7f2978021000-7f297c000000 ---p 00000000 00:00 0 
7f297e698000-7f297e84e000 r-xp 00000000 fd:00 134378031                  /usr/lib64/libc-2.17.so
7f297e84e000-7f297ea4e000 ---p 001b6000 fd:00 134378031                  /usr/lib64/libc-2.17.so
7f297ea4e000-7f297ea52000 r--p 001b6000 fd:00 134378031                  /usr/lib64/libc-2.17.so
7f297ea52000-7f297ea54000 rw-p 001ba000 fd:00 134378031                  /usr/lib64/libc-2.17.so
7f297ea54000-7f297ea59000 rw-p 00000000 00:00 0 
7f297ea59000-7f297ea6e000 r-xp 00000000 fd:00 142624879                  /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f297ea6e000-7f297ec6d000 ---p 00015000 fd:00 142624879                  /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f297ec6d000-7f297ec6e000 r--p 00014000 fd:00 142624879                  /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f297ec6e000-7f297ec6f000 rw-p 00015000 fd:00 142624879                  /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f297ec6f000-7f297ed70000 r-xp 00000000 fd:00 134378041                  /usr/lib64/libm-2.17.so
7f297ed70000-7f297ef6f000 ---p 00101000 fd:00 134378041                  /usr/lib64/libm-2.17.so
7f297ef6f000-7f297ef70000 r--p 00100000 fd:00 134378041                  /usr/lib64/libm-2.17.so
7f297ef70000-7f297ef71000 rw-p 00101000 fd:00 134378041                  /usr/lib64/libm-2.17.so
7f297ef71000-7f297f0e2000 r-xp 00000000 fd:00 141313580                  /usr/lib64/libstdc++.so.6.0.22
7f297f0e2000-7f297f2e2000 ---p 00171000 fd:00 141313580                  /usr/lib64/libstdc++.so.6.0.22
7f297f2e2000-7f297f2ec000 r--p 00171000 fd:00 141313580                  /usr/lib64/libstdc++.so.6.0.22
7f297f2ec000-7f297f2ee000 rw-p 0017b000 fd:00 141313580                  /usr/lib64/libstdc++.so.6.0.22
7f297f2ee000-7f297f2f2000 rw-p 00000000 00:00 0 
7f297f2f2000-7f297f313000 r-xp 00000000 fd:00 134294926                  /usr/lib64/ld-2.17.so
7f297f4f9000-7f297f4fe000 rw-p 00000000 00:00 0 
7f297f510000-7f297f513000 rw-p 00000000 00:00 0 
7f297f513000-7f297f514000 r--p 00021000 fd:00 134294926                  /usr/lib64/ld-2.17.so
7f297f514000-7f297f515000 rw-p 00022000 fd:00 134294926                  /usr/lib64/ld-2.17.so
7f297f515000-7f297f516000 rw-p 00000000 00:00 0 
7ffe2c645000-7ffe2c666000 rw-p 00000000 00:00 0                          [stack]
7ffe2c744000-7ffe2c746000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
已放弃(吐核)


OpenCV4(C++)—— 直方图 直方图(Histogram)最开始在统计学中被提出,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。在图像领域,直方图用来更直观地展现各像素值出现的频率,例如常用的灰度直方图反映的是一幅图像中各灰度像素值(0-255)出现的频率之间的关系。 阅读详情

相关推荐

直方图(histogram)

直方图统计,opencv截取的视频帧,对话框中的picture控件

C++自定义直方图统计

Mat HistCalculate(Mat img) { Mat img_dect = img; img_dect.at<Vec3b>(0, 0)[0]; //获得图像大小 int width = img_dect.cols; int hight = img_dect.rows; //统计直方图数据分别累加每个颜色值的数量 float B[256] = { 0.0 }; ...

weixin_42376458的博客 1720

【机器人】转动的指数坐标表示心得理解

转动的指数坐标表示心得理解1.前言2.指数坐标表示旋转矩阵3.原理推导4.矩阵对数、矩阵指数 1.前言 最近因为项目需求,又学习了一点机器人学的东西,参考书籍为《现代机器人学》,该书采用指数坐标、旋量的方式来对机器人进行描述和运动学、动力学建模,让我对机器人有了更深的理解,也是弥补DH参数建模复杂的缺陷,虽然DH法只用4个参数,而旋量需要更多,但是它骚啊! 本文是我学习了转动的指数坐标表示的一个心得体会,如有问题请多多包涵。 2.指数坐标表示旋转矩阵 指数坐标可以用来表示求解旋转矩阵,其原理非常简单巧妙,需

要恰饭得嘛 2329

直方图计算C++代码实现

//计算直方图 vector<vector<int>> CalHistgram(const Mat& img) { vector<vector<int>>histogram(256); for (int i = 0; i < histogram.size(); ++i) histogram[i].resize(3); for (int row = 0; row < img.rows; row++)

xin_hen的博客 2705

补洞与fairing算法

对网格进行补洞,remesh, 平滑,fairing, 最小二乘优化平滑

闪电彬彬的博客 1047

跟着团子学SAP:SAP用户状态管理详解(含权限分配等) OK02

SAP用户状态详细配置逻辑及解析

Lucas1211的博客 3万+

C++ 超详细14Bit,16Bit,24Bit,32Bit图像直方图统计并绘制显示(详细图文教程_附C++代码)

C++ OpenCv提供了函数calcHist(),可以很方便的帮助我们统计一幅8Bit图像的直方图,但是对于10Bit,12Bit,14Bit,16Bit,24Bit,32Bit等高位图像就不适用了,无法统计,这时候就需要我们自己手写代码统计高位图像的直方图。

qq_40280673的博客 6048

遥感卫星影像AI数据集格式规范详解、技术原理与数据生产全流程技术手册

本技术手册旨在系统性地梳理遥感卫星影像AI数据集的各类格式标准(涵盖VOC、COCO、YOLO及遥感专用DOTA格式等),深入剖析其背后的技术原理,并详细阐述数据生产的全过程,涵盖预处理、标注、质量控制及数据增强等关键环节。无论您是刚入门的算法工程师,还是资深的数据生产管理者,本手册都将为您提供详实的参考与指引。

panshengwu的博客 1129

C++ 超详细8Bit图像直方图统计并绘制显示,不使用calcHist()函数(详细图文教程)

C++ OpenCv中提供的函数calcHist()可以很方便的帮助我们统计一幅8Bit图像的直方图,但是有时候我们不想用OpenCv提供的函数来统计,想自己根据自己的需求来做一个统计,那么看这个教程就对了,学会这种方法不仅是8Bit图像可以自己手写统计,10Bit,12Bit,14Bit,16Bit,24Bit,32Bit等图像,都可以自己手写代码实现直方图统计并显示出来。关于16Bit图像直方图统计并显示的具体教程,看我下一篇文章。

qq_40280673的博客 6300

Apollo 9.0 速度非线性规划算法 – piecewise jerk speed nonlinear optimizer Ⅰ

二次规划的速度规划算法(PiecewiseJerkSpeedOptimizer)的存在两个问题: 这里以一张图来说明上面的问题,假设存在一个实际限速区间(或曲率很大需要降速的区间)[S1, S2],PiecewiseJerkSpeedOptimizer的做法是根据动态规划的st曲线(黑色),找到具体的时间区间[T1, T2],然后对区间[T1, T2]内所有的点施加约束或惩罚。但是二次规划平滑后的曲线(黄色)发生了变化,那么限速区间[S1, S2]对应的时间区间[T1, T2]也发生了变化,所以实际应该是对

WaiNgai 333

Amesim应用篇-电芯等效电路模型标定

为了使计算模型更加准确,在有电芯实验测试数据的情况下,依据现有的实验数据对Amesim中的电池等效电路模型进行标定。标定的目的是为了获得更加符合项目实际情况的电芯等效电路模型,标定完的电芯可以用于搭建PACK模型,也可以用于其他虚拟实验。本文以充电标定为例,进行介绍。放电标定与充电一致。

2201_75375391的博客 1213

打印输入单词字符数量统计直方图-C语言第二版

打印输入单词字符数量统计直方图-C语言第二版

losangelx的博客 865

Megatron-LM从头训练大语言模型:并行策略图示【Tensor并行、Pipeline并行、Data并行、Sequence并行、virtual_pipeline并行、Context并行】

节点包含的层每GPU的参数内存每GPU的激活内存节点0Stage 0层1-1212层参数/2 (TP切分)8k序列激活 (CP切分)节点1Stage 1层13-2412层参数/2 (TP切分)8k序列激活 (CP切分)节点2Stage 2层25-3612层参数/2 (TP切分)8k序列激活 (CP切分)节点3Stage 3层37-4812层参数/2 (TP切分)8k序列激活 (CP切分)负载均衡:每个节点处理相同数量的层(12层)内存优化。

u013250861的博客 285

打印输入单词字符数量统计直方图-C++版

打印输入单词字符数量统计直方图-C++版

losangelx的博客 874

【Qt】QtCreator远程部署、调试程序

1)QtCreator 工具–> 选项 --> 设备 --> 添加2)设备设置向导选择–> Generic Linux Device --> 开启向导3)填写“标识配置的名称”(随便写)、设备IP、用户名 --> 下一步4)选择配对秘密文件,第一次配对,可以不填写,点击“下一步”5)点击“完成”6)设备添加成功,需要再配置SSH端口号、用户名、密码等7)保存SSH登陆密码:验证类型选择默认“Default”–> “创建新密钥”–> “Test”

郭老二 5194

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C/C++高级语言程序设计课程设计

C/C++高级语言程序设计课程设计C高级语言程序设计课程设计1. 课程设计任务内容2. 问题描述与分析1. 问题描述2. 设计分析3. 算法设计与流程图4. 编码与测试5. 程序编码6. 程序测试7. 总结分析 C高级语言程序设计课程设计 1. 课程设计任务内容 分蛋糕(201703-1):小明今天生日,他有n块蛋糕要分给朋友们吃,这n块蛋糕(编号为1到n)的重量分别为al , a2, … an。 小明想分给每个朋友至少重量为k的蛋糕。小明的朋友们已经排好队准备领蛋糕,对于每个朋友,小明总是先将自己手中编

qq_42108313的博客 1899

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

K&R《C程序设计语言(第2版)》习题解答项目完全解析:106个C语言练习带你从入门到精通

如果你想系统学习C语言,K&R《C程序设计语言(第2版)》习题解答项目是一份不可多得的宝藏资源。这个开源项目收录了Brian W. Kernighan与Dennis M. Ritchie合著经典教材《The C Programming Language》(即K&R)的全部课后习题答案,共106个C语言练习,覆盖8大章节,从Hello World到系统调用一应俱全。无论你是刚接触C语言的新手,还是想

gitblog_00477的博客 662

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

c++ 数组换行_C程序设计语言 练习1-13

题目:编写一个程序,打印输入中单词长度的直方图。水平方向的直方图比较容易,垂直方向的直方图则要困难些。步骤1:统计各个单词长度说明:此部分基本包含在教材中,没有难度。#include <stdio.h> #define MAX 20 //数组默认长度 #define IN 1 //单词内 #define OUT 0 //单词外 int main() { int i, ...

weixin_28221255的博客 375

打印输入单词字符数量统计直方图-Python版

打印输入单词字符数量统计直方图-Python版

losangelx的博客 1246

eslint-plugin-import 的 no-mutable-exports 规则:禁止可变导出绑定,强制 `const` 导出

`import/no-mutable-exports` 是 eslint-plugin-import 提供的一条校验规则,用于禁止通过 `var` 或 `let` 声明并导出(含具名导出、默认导出与重导出)可变绑定,引导开发者统一使用 `const` 导出不可变引用。本文以 [docs/rules/no-mutable-exports.md](https://link.gitcode.com/i/

gitblog_00444的博客 660

c语言输入单词长度直方图,第7周 C语言程序设计(新2版) 练习1-13 打印输入单词长度的直方图(水平与垂直)...

一、水平直方图数组问题及代码:学习/*打印输入单词长度的直方图*/#include#define MAXHIST 15 //最大直方图#define MAXWORD 11 //单词最大长度#define IN 1 //单词内#define OUT 0 //单词外int main(){int c,i,nc,state;int len;int maxvalue; //数组wl[]的...

weixin_42390234的博客 218

打印输入单词字符数量统计直方图-Java版

打印输入单词字符数量统计直方图-Java版

losangelx的博客 766

学习C语言编程必备的入门书籍

转自知乎路人甲 本篇内容将包含一些算法以及数据结构相关内容,文章中的所有推荐的书籍均来自知乎社区大牛力荐书籍、豆瓣评分较高书籍、各语言社区比较热门书籍以及京东、亚马逊、当当热销书籍的重合书籍。在接下来的文章中会涉及: 《C Primer Plus》 《C Primer Plus》详情链接 豆瓣评分(C Primer Plus (豆瓣)):9.1分 ,有62.5%的读者给出了满分评价 京东:在计算...

正在成为 code ape 1万+

c语言:计算输入字符各个字母出现的频率思路

接着上一篇的《c语言:计算输入字符个数》,这一篇来写《c语言:计算输入字符各个字母出现的频率思路》 同样也是《c语言程序设计第二版》这本书上面: 2.编写一个程序,计算输入字符各个字母出现的频率。 最终结果为: 刚刚接手题目的时候,我想得很复杂,因为26个字母中有大小写嘛,小写a~z,大写A~Z 但是,无论是大写还是小写,字母都只有26个,在此,当输入大写字母的时候,我们就将其...

weixin_33908217的博客 1078

算法-程序设计课week5-作业

A - 最大矩形 给一个直方图,求直方图中的最大矩形的面积。例如,下面这个图片中直方图的高度从左到右分别是2, 1, 4, 5, 1, 3, 3, 他们的宽都是1,其中最大的矩形是阴影部分。 Input 输入包含多组数据。每组数据用一个整数n来表示直方图中小矩形的个数,你可以假定1 <= n <= 100000. 然后接下来n个整数h1, …, hn, 满足 0 <= h...

TriAlley的博客 1084

c++自底向上算符优先分析_学习编程的推荐书籍 -【入门书籍之"C"篇】!...

学习编程道路上的入门书籍之C篇,此篇内容将包含一些算法以及数据结构相关内容,文章中的所有推荐的书籍均来自大牛力荐书籍、豆瓣评分较高书籍、各语言社区比较热门书籍以及热销书籍的重合书籍。✪ C Primer Plus支持pdf下载豆瓣评分(C Primer Plus (豆瓣)):9.1分 ,有62.5%的读者给出了满分评价京东:在计算机与互联网销量榜中排名第七位,在c语言相关书籍中排...

weixin_39688378的博客 131
上一篇: C++程序设计语言练习10.15 构造函数的调用时机
下一篇: C++程序设计语言练习10.12 C++的普通类表示
armor51
博客等级 码龄20年 9粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值