gpt4 book ai didi

c++ - 我应该编写自己的数据结构来处理语义解析还是直接在编译器项目中使用 STL

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

我发现STL用起来很重,比如vector,string等等。作为编译器项目,速度和内存都很重要。所以,如果我把字符串作为它的核心数据结构,就很难提高翻译速度。

我想知道您在项目中处理字符串的解决方案是什么?

谢谢!

最佳答案

如果使用得当,STL 通常 开销。它与手工编写的 C 代码一样高效,因此没有理由出于性能原因而避免使用它。

但是,如果您需要 STL 中不存在的功能,那么是的,您最好自己编写,而不是试图强制一个 STL 类来执行它的某些操作不适合。

there are many name looking up in my project, such as "com.google.voice....", if I use std::string, it must be sliced again and again. First, head node "com" is sliced, if "com" object has been found, the other names "google.voice...." should be look up in this object recursively. Are there any better solution to avoid slice string repeatedly?

我会使用迭代器。

假设您有一个字符串 s = "com.google.voice",然后简单地定义指向字符串开头和每个子字符串之间分隔符的迭代器。然后,无需创建一个全新的字符串来表示 "com",您只需使用指向字符串开头和结尾的两个迭代器即可。

Boost.StringAlgo 包含许多实现用于迭代器范围的常见字符串操作。

关于c++ - 我应该编写自己的数据结构来处理语义解析还是直接在编译器项目中使用 STL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6998068/

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