今天在写一个搜索引擎的分词系统,是很简单的那种,但是居然费了我一天的时间还没完成,晚上估计还得弄一会了,但是在这个过程中,遇到了集中关于字符串数组的操作,值得和大家分享一下。

首先是关于统计字符串数组元素的个数:

字符串数组不同于整型数组,每一个字符串所占的空间是不一样的,不能用sizeof简单的计算出来。下面是示例代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
string str[] = {"abfafawfefw","defg","","Miss",""};
cout << sizeof(str) / sizeof(str[]);
return ;
}

字符串数组存取方式采用了对齐原则,占用空间少的向占用空间多的靠齐,首先使用sizeof(str)首先获得所用的所用字节数,使用sizeof(str[0])再计算数组中一个元素平均占用的字节数。然后除一下,就是元素个数,但是注意,被除的那个元素应该是所占空间最大的那个。

然后是关于统计字符串数组各个元素出现的次数:

这个是我用在统计分词后得到的词组各自的频次的,但是不知道出了什么问题,一直实现不了,虽然我知道这个确实是很简单的一个问题。

我通过大百度找到了一种统计次数的方法,他是统计整型数组的,但是感觉很不错,但是我暂时还没有验证,先贴出来吧:

#include<stdio.h>
#include<stdlib.h>
main()
{
int a[],b[],c[]={},i,j;
//a数组放随机数
//b数组放是否被统计的标志,1未统计,0已统计
//c数组放对应a数组中随机数出现的次数
for(i=;i<;i++)
{
a[i]=rand()()%;//产生0~20的随机数
b[i]=;//未统计
printf("%5d",a[i]); //打印a数组的值
if((i+)%==) //一行打印10个数
printf("\n");
}
printf("\n");
for(i=;i<;i++)
{
if(b[i]) //若a[i]未被统计
{
c[i]++; //次数加1
for(j=i+;j<;j++)//从下一个开始向后查找
if(a[j]==a[i]) //若相等
{
c[i]++; //则次数增1
b[j]=; //改为已统计
}
}
}
for(i=,j=;i<;i++)
{
if(c[i]) //若某随机数出现了,则打印其值和出现次数
printf("%3d:%5d 出现 %3d次\n",j++,a[i],c[i]);
}
}

他用了一个统计标志,这个很适合我现在的这个问题,也希望能对大家有用吧,谢谢了。

下面是CSDN上一个很不错的关于C++的各类总结,这个链接是字符串的。

http://blog.csdn.net/wangfengwf/article/details/11496141

最新文章

  1. 生产环境中,数据库升级维护的最佳解决方案flyway
  2. 历年NOIP水题泛做
  3. 编译CDH Spark源代码
  4. SQL Server 创建表 添加主键 添加列常用SQL语句【转】
  5. HTTP - 摘要认证
  6. EXP/IMP的三种模式
  7. Java魔法堂:JVM的运行模式 (转)
  8. solr中重跑索引
  9. 监控gc
  10. OAuth2.0 知多少
  11. Ubuntu 共享 转载
  12. Solr4.10与tomcat整合并安装中文分词器
  13. c#gridcontrol 的一些设置
  14. git 更新远程分支列表
  15. Nginx + Tomcat 在 Windows7 上搭建负载均衡集群
  16. java高级工程师开放面试题集&lt;一&gt;
  17. 关于Unity3D中鼠标移动指定物体的解决方案
  18. MongoDB中设置expire过期自动删除
  19. Eclipse 如何创建Web项目
  20. AP_创建标准发票后会计科目的变化(概念)

热门文章

  1. 当使用junit4 对spring框架中controller/service/mapper各层进行测试时,需要添加的配置
  2. JS 封装一个求数组最大值的函数
  3. Vue.js 渲染简写样式存在的问题
  4. rtsp://192.168.1.198:554/PSIA/streaming/channels/101
  5. vscode快捷键(lua开发)
  6. Acdream A - Unique Attack
  7. 数据库-mongodb-常用命令
  8. SqlCommand.DeriveParameters failed
  9. 数据结构(Java语言)——LinkedList简单实现
  10. android一个弹出菜单的动画(一)