jjzjj

c++ - 简单(moSTLy)变量解析器

在我的一个项目中,我需要能够提供一个非常简单的变量查找和替换解析器(主要用于路径)。变量主要在启动期间使用,偶尔用于访问文件(不是程序的主要功能,只是加载资源),因此解析器不需要高性能。但是,我非常希望它是线程安全的。解析器需要能够存储一组变量(目前为map)并能够用字符串中的相应值替换标记。变量值可能包含其他变量,这些变量将在使用变量时解决(添加时不会,因为变量可能会随着时间的推移而添加)。当前的变量语法看起来像这样:$basepath$/resources/file.txt/$drive$/$folder$/path/file我当前的解析器使用一对stringstreams(“ou

c++ - "C++ most vexing parse"的运行时行为

在尝试回答this时我发现没有()(调用“C++最烦人的解析”)的问题g++的输出是1(可以在这里看到:http://ideone.com/GPBHy),其中VisualStudio给出链接器错误。我无法理解输出如何可以1,有什么线索吗? 最佳答案 正如问题的答案已经解释的那样,由于“最令人烦恼的解析”语句而不是定义一个名为str的对象与两个istream_iterators指定其初始值设定项,被解析为名为str的函数的声明返回string.所以程序的简单版本解析为,thisonlinesample:#includevoiddoSo

c++ - 有没有办法强制 "most vexing parse"成为错误,即使是逐个类?

是否有可能(对A类进行任何修改)进行以下工作?即,使最令人烦恼的解析错误?classA{};intmain(){Aa();//canthisbeforcedtobeanerror??Ab;//thisshouldwork} 最佳答案 类A的任何修改都不会影响声明Aa();的解析方式。解析器甚至在查看A的定义之前就确定这是一个函数声明。事实上,A的定义甚至不需要可见来解析这个语句;预先声明就足够了。但是,编译器通常会对此发出警告,您可能会将其变成错误。例如,对于clang,您可以使用标志-Werror=vexing-parse。str

c++ - 菱形多态继承 : sizeof Most derived Class

我知道菱形继承会导致歧义,可以通过virtualBaseClasses使用继承来避免,问题不在于此。当类是多态时,问题是关于菱形层次结构中最派生类的大小。这是示例代码和示例输出:#includeusingnamespacestd;classBase{public:virtualvoiddoSomething(){}};classDerived1:publicvirtualBase{public:virtualvoiddoSomething(){}};classDerived2:publicvirtualBase{public:virtualvoiddoSomething(){}};cl

c++ - GDB 中用于 C++ 模板(moSTLy boost)的代码更清晰、更漂亮的堆栈跟踪

我开发的金融应用程序(Linux/C++/gcc)广泛使用了boost和模板。通过GDB调试时生成的堆栈跟踪非常复杂,boost的内部模板连接在输出中添加了很多丑陋的噪音。有谁知道为C++模板繁重(尤其是boost-heavy)代码获得更清晰、更漂亮和更有洞察力的堆栈跟踪的方法吗? 最佳答案 较新版本的GDB中的Python支持已用于为STL等模板密集型结构提供pretty-print。http://sourceware.org/gdb/wiki/PythonGdbTutorialhttp://sourceware.org/gdb/

c++ - 术语 "Most vexing parse"是何时何地创造的?

有无数文章和博客讨论C++的mostvexingparse,但我似乎找不到比“C++文献”更具引用意义的任何内容。这个词是从哪里来的? 最佳答案 ScottMeyers的书EffectiveSTL:50SpecificWaystoImproveYourUseoftheStandardTemplateLibrary可能是2001年首次发布使用。 关于c++-术语"Mostvexingparse"是何时何地创造的?,我们在StackOverflow上找到一个类似的问题:

c++ - STL vector 与列表 : Most efficient for graph adjacency lists?

列表在push_back时消耗大部分时间分配内存。另一方面,vector必须在需要调整大小时复制其元素。因此,哪个容器最有效地存储邻接表? 最佳答案 我不认为可以绝对肯定地回答这个问题。尽管如此,我估计vector至少有90%的机会会做得更好。邻接表实际上比许多应用程序更倾向于使用vector,因为邻接表中元素的顺序通常无关紧要。这意味着当你添加元素时,它通常是到容器的末尾,当你删除一个元素时,你可以先将它交换到容器的末尾,所以你只能在末尾添加或删除。是的,vector在扩展时必须复制或移动元素,但实际上这几乎从来不是一个实质性的问

c++ - "most important const"与 auto_ptr : Why the code does not compile?

以下代码无法在VisualC++2008或2010上编译:#includestructA{};std::auto_ptrfoo(){returnstd::auto_ptr(newA);}conststd::auto_ptrbar(){returnstd::auto_ptr(newA);}intmain(){conststd::auto_ptr&a=foo();//mostimportantconstconststd::auto_ptr&b=bar();//errorC2558://class'std::auto_ptr'://nocopyconstructoravailableorco

c++ - 编译器编程 : What are the most fundamental ingredients?

我有兴趣编写一个非常简约的编译器。我想编写一个满足以下条件的小软件(用C/C++):以ELF格式输出(*nix)输入是一个文本文件类C语法和句法没有链接器没有预处理器非常小(最多1-2KLOC)语言特点:原生数据类型:char、int和float数组(适用于所有native数据类型)变量控制结构(if-else)职能循环(会很好)简单的代数(div、add、sub、mul、bool表达式、位移等)内联汇编(用于系统调用)谁能告诉我如何开始?我不知道编译器由哪些部分组成(至少在我可以立即开始的意义上)以及如何对它们进行编程。谢谢你的想法。 最佳答案

ios - swift 3 : most performant way to check many strings with many regular expressions

我确实有一个包含数百个字符串的列表和一个包含10k正则表达式的数组。我现在必须遍历所有字符串并检查10k正则表达式中的哪些匹配。执行此操作的最高效方法是什么?目前我正在这样做:myRegularExpression.firstMatch(in:myString,options:myMatchingOption,range:NSMakeRange(0,myString.characters.count))==nil其中myRegularExpression是一个NSRegularExpression存储以供重用,myMatchingOption是NSRegularExpression.M