当前位置: 首页 > news >正文

永久免费建网站调整百度对网站的最大天级抓取频次值

永久免费建网站,调整百度对网站的最大天级抓取频次值,重庆网页推广公司,数据库性质的网站怎么做目录 介绍分析完整代码: 免责声明: 本文章是实习期间的C练习题目,可能会存在大量错误,文章仅作为个人笔记供作者自己方便观看. 介绍 在一个游戏里,可能会出现大量的NPC, 这些NPC有很多都是相同的名字. 存放NPC名字的…

目录

  • 介绍
  • 分析
  • 完整代码:

免责声明:
本文章是实习期间的C++练习题目,可能会存在大量错误,文章仅作为个人笔记供作者自己方便观看.

介绍

在一个游戏里,可能会出现大量的NPC, 这些NPC有很多都是相同的名字.
存放NPC名字的文件可能是一个Excel文件, 现在的需求是在游戏运行时并且是在节省内存的基础上,快速找到某个NPC名字(某个字符串)的位置

分析

为了节省内存,我们不能使用string类型来存储字符串,因为string类型占用内存消耗太大了

在32位下,string占28个字节,在64位下,string占用40个字节(VS)
(不同的编译环境是不一样的)

我们先用set容器进行字符串的去重和排序,因为string内存太大,为了节省内存,所以我们选择不使用string类型,而是使用char数组,将排序去重后字符串存在char数组中,并且每一个NPC的名字都用 ‘ \0 ’隔开,然后为每一个NPC的名字编码,每个NPC名字的int编码是 字符串的首字符在 char数组中的位置. 因为字符串已经排序了,并且编码也是递增的,所以此时我们可以通过int编码对字符串使用二分操作.

完整代码:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<string>
#include<fstream>
#include<algorithm>
#include<set>
using namespace std;string RandString()
{char ch[500] = { 0 };int len = rand() % 13 + 4;for (int i = 0; i <= len; i++){ch[i] = rand() % 26 + 'A';}return ch;
}void Init()
{std::string Result;std::vector<std::string> Seed;for (int i = 1; i <= 5000; ++i){Seed.emplace_back(RandString());}for (int i = 1; i <= 10000; ++i){Result.append(Seed[rand() % 5000]);Result.append("\r\n");}FILE* fl = fopen("data.txt", "wb");fwrite(Result.c_str(), sizeof(Result), 100, fl);fclose(fl);
}/上面都是准备阶段,创建一个有字符串的TXT文件.
class Check
{vector<char>    Storage;vector<int>     Index;static const int NOT_FOUND = -1;//用于给lamaba表达式比较子传参public:Check(){char buffer[1024] = { 0 };set<std::string> set_str;fstream reader;reader.open("data.txt");while (reader >> buffer){set_str.insert(buffer);}for (auto it : set_str){for (int i = 0; i < it.size(); ++i){Storage.emplace_back(it[i]);}       Storage.emplace_back('\0');}int id = 0;for (auto i : set_str){Index.push_back(id);id += i.size() + 1;//用Int的值进行编码}}int string_find(const std::string& key){auto&& iterator = std::lower_bound(Index.begin(), Index.end(), key, [this](int id0, const std::string& s) {string s0 = &Storage[id0];string s1 = s;return s0 < s1;});if (iterator == Index.end()){return NOT_FOUND;}return *iterator;}
};
int main()
{Init();Check check;int location = check.string_find("ANDTBBZEGQTZED");cout << "字符串的位置:" << location << endl;}
http://www.yayakq.cn/news/257495/

相关文章:

  • 网站域名自动跳转wordpress导航分类怎么添加new
  • 聊城做手机网站湖南做网站 n磐石网络
  • 做卡盟网站赚钱吗三合一网站和传统网站
  • 完成网站建设成本网站建设公司网站建设专业品牌
  • 做公司网站阿里怎么制作网站
  • 湖南平台网站建设找哪家网站备案渝
  • 如何用自己的电脑做网站外贸网络推广招聘
  • 贵阳网站建设在哪里wordpress连接域名
  • 安康公司网站制作签名设计免费版
  • 郑州建设银行网站房贷网点在哪邦邻营销型网站建设
  • 网站开发弹窗制作如何在百度做网站
  • 公司网站模板最新网络公司 开发网站
  • 外贸网站制作公司哪家好用wordpress做企业门户
  • 宜昌市网站建设加强司法机关网站建设
  • 做汽车团购的网站建设科技打造巅峰华夏从横推鹰酱开始
  • 做电视直播网站如何制作小程序码
  • 福清福州网站建设t恤定制平台
  • 如何编写一个网站平台网站应该怎样做seo
  • 装饰网站建设效果图做微商怎么找客源加人
  • 中国建设银行网站会员可以改名现在的网站开发框架
  • 中小学 网站建设 通知炎陵网站建设
  • 在线做网页的网站seo综合查询爱站
  • 网站怎么做按钮外汇网站建设公司
  • 合肥花境建设网站手机网站生成
  • 有专业做外贸的网站吗深圳市网站备案
  • 制作网站需要钱吗wordpress设置网址
  • 呼和浩特做网站的公司wordpress heroku
  • 明星网站怎么设计南宁购物网站建设
  • 网站关键词推广做自然排名做哪些网站比较赚钱方法
  • 做捕鱼网站电话号码苏州做网站知识的分享