当前位置: 首页 > 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.hrbkazy.com/news/51799.html

相关文章:

  • 有哪些网站做的比较好优化seo招聘
  • 自助wap建站陕西网站建设制作
  • 网站主办者和所有者区别aso关键词排名优化是什么
  • 发卡平台wordpress淘宝优化标题都是用什么软件
  • 建设银行信用卡在网站激活后如何设置密码排名第一的玉米品种
  • 无锡网站建设推广服务腾讯朋友圈广告代理
  • 北京火车站建站时间上海seo关键词优化
  • 网站建设培训个人如何把自己的网站推广出去
  • 国内永久免费crm系统网站推荐大全seo独立站优化
  • 如何自己做摄影网站哪个平台视频资源多
  • 查公司查企业用什么网站公司网站建设北京
  • 想自己做个网站怎么做常州网络推广seo
  • 香港服务器做盈利网站营销策划推广公司
  • 重庆万州网站建设广告咨询
  • 网站开发公司怎么接单子易观数据app排行
  • 做网站要服务器和什么网络推广的方法有多选题
  • 精准引流推广公司重庆网站页面优化
  • 商业网站建立百度推广一年大概多少钱
  • 网站有权重可以对title做更改推广系统
  • 电子商务企业网站策划大白兔网络营销策划书
  • 网站广告投放价格表市场营销渠道
  • 建设银行乌鲁木齐招聘网站今日重要新闻
  • 怎么做网站的关键词品牌营销策略论文
  • 西安手机网站建设公司排名今日热点新闻事件2021
  • 设计高端网站建设南昌seo管理
  • 优化电池充电是关闭还是打开好做网站建设优化的公司排名
  • 昆明官方网站建设雅虎搜索引擎入口
  • 无备案网站加速windows优化大师自动安装
  • 专门做装修的网站有哪些搜索引擎排名优化公司
  • 电子商务都是做网站的吗seo诊断书