gpt4 book ai didi

c++ - 优化字符串数组中最宽字符串的查找?

转载 作者:搜寻专家 更新时间:2023-10-31 00:46:52 26 4
gpt4 key购买 nike

现在我有一个 std::strings 数组,并且在我的字体中有一个函数来查找它的宽度。

 for(std::vector<std::pair<std::string,bool>>::const_iterator it = items.begin();
it != items.end(); ++it)
{
cSz = getFont().getTextWidth(it->first);
if( cSz > h)
{
h = cSz;
}
}
widestItem = h;

我想知道我是否可能忽略了一种更好的方法来做到这一点,因为这是一种非常蛮力的查找方法。

在我的情况下,存储每个宽度并引用它没有多大意义。

谢谢

最佳答案

如果我对此进行优化,我会:

  1. 确保使用探查器来确定这是花费大量时间的地方。

  2. 可能有(字体,字符串)元组的缓存。如果您重复计算相同字符串的宽度,这会有所帮助。但这取决于您的具体用例。

  3. 在常见情况下,您可以使您的 getTextWidth 方法非常快 - 您可以有一个包含 256 个文本宽度单位的平面数组,并且只需取消引用并对您获得的每个 latin-1 字符求和。这将足够快,您不会看到在现代 CPU 上花费的时间。当然,您仍然必须实现非拉丁字符,并且您可能想要也可能不想进行字距调整、连字和复杂的文本布局(这就是这些东西可能变得昂贵的地方)。

关于c++ - 优化字符串数组中最宽字符串的查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4637648/

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