gpt4 book ai didi

c++ - 使用大量已知常数变量的正确方法

转载 作者:行者123 更新时间:2023-11-30 01:36:11 26 4
gpt4 key购买 nike

程序接收一个表示字符的 vector 。然后,它将接收到的 vector 与表示字符的所有已知 vector 进行比较。

我不确定应该如何使用已知 vector 。

我想到的几个选项:

1) 使用全局变量:

vector<int> charA{1,2,3,4,5};
vector<int> charB{5,3,7,1};
...
vector<int> charZ{3,2,5,6,8,9,0}

char getLetter(const vector<int> &input){
if(compareVec(input,charA) return 'A';
if(compareVec(input,charB) return 'B';
....
if(compareVec(input,charZ) return 'Z';

}

2) 在函数中声明所有变量:

 char getLetter(const vector<int> &input){
vector<int> charA{1,2,3,4,5};
vector<int> charB{5,3,7,1};
...
vector<int> charZ{3,2,5,6,8,9,0}

if(compareVec(input,charA) return 'A';
if(compareVec(input,charB) return 'B';
....
if(compareVec(input,charZ) return 'Z';

}

3) 传递变量

char getLetter(const vector<int> &input, vector<int> charA,
vector<int> charB... , vecotr<int> charZ){
if(compareVec(input,charA) return 'A';
if(compareVec(input,charB) return 'B';
....
if(compareVec(input,charZ) return 'Z';

}

最佳答案

这听起来像是 perfect hash generator 的申请(链接到 GNU gperf)。

引用文档

gperf is a perfect hash function generator written in C++. It transforms an n element user-specified keyword set W into a perfect hash function F. F uniquely maps keywords in W onto the range 0..k, where k >= n-1. If k = n-1 then F is a minimal perfect hash function. gperf generates a 0..k element static lookup table and a pair of C functions. These functions determine whether a given character string s occurs in W, using at most one probe into the lookup table.

如果这不是合适的解决方案,那么我建议使用函数静态。您希望避免使用局部函数,因为这会严重影响性能,而全局变量会污染您的命名空间。

有点像

char getLetter(const vector<int> &input){
static vector<int> charA{1,2,3,4,5};
static vector<int> charB{5,3,7,1};

关于c++ - 使用大量已知常数变量的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52536467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com