eis/TestProject/play_gruond/VarsCache.hpp

73 lines
2.0 KiB
C++
Raw Permalink Normal View History

#pragma once
#include <map>
#include <mix_cc/json.h>
#include <string>
struct VarsCache {
public:
void init(const std::vector<std::string> &tags, size_t _pv_num = 6) {
m_tags = tags;
tag_num = tags.size();
pv_num = _pv_num;
// 预分配所有 key
p_keys.resize(tag_num);
tag_keys.resize(tag_num);
pv_keys.resize(tag_num); // 每个元素是 pv_num 个 key 的数组
for (size_t i = 0; i < tag_num; ++i) {
auto &x = tags[i];
int item_index = stoi(x.substr(3));
p_keys[i] = "p" + std::to_string(item_index);
tag_keys[i] = "tag" + std::to_string(item_index);
// 预分配 pv 滑动窗口的 key
pv_keys[i].resize(pv_num);
for (int j = 0; j < pv_num; ++j) {
pv_keys[i][j] =
"pv" + std::to_string(item_index) + "_" + std::to_string(j);
}
}
}
void init(size_t _tag_num, size_t _pv_num = 6) {
tag_num = _tag_num;
pv_num = _pv_num;
// 预分配所有 key
p_keys.resize(tag_num);
tag_keys.resize(tag_num);
pv_keys.resize(tag_num); // 每个元素是 pv_num 个 key 的数组
m_tags.resize(tag_num);
for (size_t i = 0; i < tag_num; ++i) {
int item_index = i + 1;
m_tags[i] = "tag" + std::to_string(item_index);
p_keys[i] = "p" + std::to_string(item_index);
tag_keys[i] = "tag" + std::to_string(item_index);
// 预分配 pv 滑动窗口的 key
pv_keys[i].resize(pv_num);
for (int j = 0; j < pv_num; ++j) {
pv_keys[i][j] =
"pv" + std::to_string(item_index) + "_" + std::to_string(j);
}
}
}
std::string dumps() {
mix_cc::json js1;
js1["tag_num"] = tag_num;
js1["pv_num"] = pv_num;
js1["p_keys"] = p_keys;
js1["tag_keys"] = tag_keys;
js1["pv_keys"] = pv_keys;
js1["m_tags"] = m_tags;
return js1.dump();
}
public:
size_t tag_num;
size_t pv_num;
std::vector<std::string> p_keys;
std::vector<std::string> tag_keys;
std::vector<std::vector<std::string>> pv_keys; // [tag_index][window_index]
std::vector<std::string> m_tags;
};