草庐IT

vs-cmake-examples

全部标签

C++ STL Map vs Vector 速度

在我的实验性编程语言的解释器中,我有一个符号表。每个符号由一个名称和一个值组成(该值可以是例如:字符串、int、函数等类型)。起初,我用一个vector来表示表格,并遍历符号检查给定的符号名称是否合适。然后我虽然使用map,在我的例子中是map,会比一直遍历vector要好但是:这部分有点难解释,但我会努力的。如果在我的语言程序中第一次检索变量,当然必须找到它在符号表中的位置(现在使用vector)。如果我每次执行该行时都遍历该vector(想想一个循环),那将非常慢(就目前而言,几乎与微软的批处理一样慢)。所以我可以使用映射来检索变量:SymbolTable[myVar.Name]但

C++ STL Map vs Vector 速度

在我的实验性编程语言的解释器中,我有一个符号表。每个符号由一个名称和一个值组成(该值可以是例如:字符串、int、函数等类型)。起初,我用一个vector来表示表格,并遍历符号检查给定的符号名称是否合适。然后我虽然使用map,在我的例子中是map,会比一直遍历vector要好但是:这部分有点难解释,但我会努力的。如果在我的语言程序中第一次检索变量,当然必须找到它在符号表中的位置(现在使用vector)。如果我每次执行该行时都遍历该vector(想想一个循环),那将非常慢(就目前而言,几乎与微软的批处理一样慢)。所以我可以使用映射来检索变量:SymbolTable[myVar.Name]但

c++ - 使用 CMake 从二进制文件编译和添加目标文件

我正在用C++编写一个Excel文件生成器。我拥有工作所需的一切,但我仍然依赖于一个外部的空.xlsx文件,我根据需要解压缩、迭代并添加数据以创建最终文件。我想通过将.xlsx文件转换为可执行文件的.rodata部分中的二进制blob来消除这种依赖关系,方法是首先将其转换为像这样的目标文件:$ld-r-bbinary-otemplate.otemplate.xlsx$objcopy--rename-section.data=.rodata,alloc,load,readonly,data,contentstemplate.otemplate.o我从博文中获得了这些信息http://ww

c++ - 使用 CMake 从二进制文件编译和添加目标文件

我正在用C++编写一个Excel文件生成器。我拥有工作所需的一切,但我仍然依赖于一个外部的空.xlsx文件,我根据需要解压缩、迭代并添加数据以创建最终文件。我想通过将.xlsx文件转换为可执行文件的.rodata部分中的二进制blob来消除这种依赖关系,方法是首先将其转换为像这样的目标文件:$ld-r-bbinary-otemplate.otemplate.xlsx$objcopy--rename-section.data=.rodata,alloc,load,readonly,data,contentstemplate.otemplate.o我从博文中获得了这些信息http://ww

c++ - MFC:std::string vs CString?

在MFC中使用C++。来自C#背景,我通常只对所有字符串使用字符串。我将它们用于类成员、方法参数和方法返回值。现在在C++中,我有std::string、CString、char*、LPCTSTR等等。当我设计我的数据成员、方法参数和方法返回值时,我应该使用哪种类型?易用性很重要,CString似乎提供了这一点,但我的直觉是倾向于可移植标准,尽管可移植性在我的优先级列表中非常低(现在)。另外,我不喜欢创建字符串缓冲区并将它们传递给方法和函数的c语义。我认为从直接易于编码的角度来看,CStrings可能具有优势。但是,总的来说,什么是“高代码质量”的方式来做到这一点?编辑:我特别关心代码

c++ - MFC:std::string vs CString?

在MFC中使用C++。来自C#背景,我通常只对所有字符串使用字符串。我将它们用于类成员、方法参数和方法返回值。现在在C++中,我有std::string、CString、char*、LPCTSTR等等。当我设计我的数据成员、方法参数和方法返回值时,我应该使用哪种类型?易用性很重要,CString似乎提供了这一点,但我的直觉是倾向于可移植标准,尽管可移植性在我的优先级列表中非常低(现在)。另外,我不喜欢创建字符串缓冲区并将它们传递给方法和函数的c语义。我认为从直接易于编码的角度来看,CStrings可能具有优势。但是,总的来说,什么是“高代码质量”的方式来做到这一点?编辑:我特别关心代码

c++ - 线程 vs 基于任务 vs 异步编程

我是这个概念的新手。这些是相同的还是不同的东西?有什么不同?我真的很喜欢能够同时运行两个进程的想法,例如,如果我有几个大文件要加载到我的程序中,我希望同时加载尽可能多的文件,而不是一次等待一个。并且在处理大文件(例如wav文件)时,最好将其分解为多个部分,同时对多个块进行处理,然后再将它们重新组合在一起。我想研究什么来学习如何做这种事情?编辑:另外,我知道在多核处理器上使用多个核心适合这里的某个地方,但显然异步编程并不一定意味着您使用多个核心?如果您没有多个内核可以利用,为什么要这样做? 最佳答案 它们是相关的,但又是不同的。线程,

c++ - 线程 vs 基于任务 vs 异步编程

我是这个概念的新手。这些是相同的还是不同的东西?有什么不同?我真的很喜欢能够同时运行两个进程的想法,例如,如果我有几个大文件要加载到我的程序中,我希望同时加载尽可能多的文件,而不是一次等待一个。并且在处理大文件(例如wav文件)时,最好将其分解为多个部分,同时对多个块进行处理,然后再将它们重新组合在一起。我想研究什么来学习如何做这种事情?编辑:另外,我知道在多核处理器上使用多个核心适合这里的某个地方,但显然异步编程并不一定意味着您使用多个核心?如果您没有多个内核可以利用,为什么要这样做? 最佳答案 它们是相关的,但又是不同的。线程,

c++ - 使用 CMake 打开链接器标志

使用CMake生成VS2010目标时,我希望打开/LTCG标志(如果可能,仅适用于release+releasewithdebinfo,但如果它打开用于调试构建也可以)。如何修改链接器标志?add_definitions()不起作用,因为那只会修改编译器标志。是的,我已经将它包装在if(MSVC)中。如何修改链接器标志? 最佳答案 您可以使用#pragmacomment(linker,...)修改MSC中的链接器标志但是,如果您想在构建过程中使用cmake进行此操作,则需要知道以下名称:CMAKE_EXE_LINKER_FLAGSC

c++ - 使用 CMake 打开链接器标志

使用CMake生成VS2010目标时,我希望打开/LTCG标志(如果可能,仅适用于release+releasewithdebinfo,但如果它打开用于调试构建也可以)。如何修改链接器标志?add_definitions()不起作用,因为那只会修改编译器标志。是的,我已经将它包装在if(MSVC)中。如何修改链接器标志? 最佳答案 您可以使用#pragmacomment(linker,...)修改MSC中的链接器标志但是,如果您想在构建过程中使用cmake进行此操作,则需要知道以下名称:CMAKE_EXE_LINKER_FLAGSC