草庐IT

C++标准

全部标签

c++ - 适用于 Windows 的可移植 C/C++ 应用程序的 DLL 依赖项

我想用C/C++为Windows创建一个轻量级的可移植应用程序。我不想静态链接所有内容,因为我想让exe的大小尽可能小。我也用DependencyWalker跟踪我的exe文件的DLL依赖项。我的问题是,应用程序可以拥有并在不同版本的Windows之间保持可移植性的DLL依赖项列表是什么?有了这个列表,我可以用列表检查DependencyWalker的输出,并选择要静态链接的库和动态链接的库。我更喜欢包含WindowsXP操作系统的列表,但考虑到Windows98也很有趣。 最佳答案 在VisualStudio之类的工具中创建一个基

c++ - Opencv 中的标准过滤器

我目前正在查看openCV的文档,试图找到stdfilt的matlab等价物谁能指出我正确的方向?谢谢。 最佳答案 查看stdfilt.m文件中的源代码,我们可以看到它是使用卷积实现的。我将代码移植到Python,用C\C++重写应该很简单:importcv2importnumpyasnpimg=cv2.imread('fruits.jpg',True)img=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)img=img/255.0#c=imfilter(I,h,'symmetric');h=np.ones

c++ - 我可以在 VS2008 的 C 代码中使用 C++ vector 吗

我在vs2008中运行C代码。我很好奇我是否可以将此代码与C++代码混合 最佳答案 简短的回答是肯定的。但是,存在一些细微差别。C++通常支持C的很大一个子集。这意味着您几乎可以从C++代码中获得C中可用的任何内容(例如函数、库等)。从这一点开始,您有两个选择,一个简单,一个更难。选项#1-使用C++编译器。只需将您的代码视为C++。简单地说-使用C++编译器。选项#2-混合使用C和C++。您可以编写C代码并使用C++编译器对其进行编译。在需要使用C++组件的地方使用C-likeC++。例如,您的设置可能类似于以下内容:head1.

c++ - 将 Unicode 字符串写入文件

我正在尝试编写一门读写文件的类(class)。对于字符串,有两种方式:ANSI和Unicode。ANSI函数没问题,但我的Unicode函数有问题。我可以直接读取Unicode文件,我的意思是,无需检查或跳过“0xFEFF”内容,这有点连线。无论我使用什么语言(我试过英语、中文和日语),它都有效。有什么我应该知道的吗?然后最大的问题就跳出来了:把Unicode字符串写入文件。首先,我尝试将简单的英语作为不带'\n'字符的字母表,效果很好。然后我将'\n'插入,事情开始出错:输出插入了许多空格,如“abcdefg\nhijklmn\nopqrst\nuvwxyz”('\n'有效,但空格太

c++ - 这是 union 的正确用法吗

我想要命名字段而不是索引字段,但对于某些用途我必须迭代字段。愚蠢的简化示例:structnamed_states{floatspeed;floatposition;};#defineNSTATES(sizeof(structnamed_states)/sizeof(float))unionnamed_or_indexed_states{structnamed_statesnamed;floatindexed[NSTATES];}...unionnamed_or_indexed_statesstates,derivatives;states.named.speed=0;states.na

c++ - 如何检查简单的 C++ 标准库迭代器是否可以被推进?

假设我有一个封装标准容器的类:classStash{listData;public:list::const_iteratorGetAccess()const{returnData.begin();}};这是强制用户以迭代器的形式读取数据的一种非常方便的方式。但是,除了将迭代器与container.end()进行比较之外,我找不到其他方法。所以,我想知道是否可以选择仅通过stdlib来完成,或者我必须自己编写迭代器类(例如,使用can_advance方法)。相关问题可能是thisone,但它会询问迭代器是否有效,而不是它是否可以前进。我找不到有关后者的任何信息。

c++ - 在 C++ 中创建一个标准的指针队列

假设我有一个整数队列,#include#includeusingnamespacestd;intmain(){intfirstValToBePushed=1;queueCheckoutLine;CheckoutLine.push(firstValeToBePushed);cout我如何使用一个队列来做本质上相同的事情,该队列包含指向整数的指针,而不是像上面目前所做的那样。我计划制作一个循环以生成多个值,但这只是一个更简单的示例。谢谢, 最佳答案 如果这是生命周期管理,那么:std::queue>CheckoutLine;Checko

c++ - 编译器用来决定 move 操作是否安全的标准是什么?

给定以下代码(http://liveworkspace.org/code/5oact):classFoo{public:Foo(){log(__PRETTY_FUNCTION__);}Foo(constFoo&other){log(__PRETTY_FUNCTION__);}Foo&operator=(constFoo&other){log(__PRETTY_FUNCTION__);return*this;}Foo(Foo&&other)noexcept{log(__PRETTY_FUNCTION__);}Foo&operator=(Foo&&other)noexcept{log(__

读取标准输入的 C++ 最快的 cin?

我在Linux上使用cachegrind分析了一个计算量大的C++程序。令人惊讶的是,事实证明我的程序的瓶颈不在于任何排序或计算方法......而是在于读取输入。这是cachegrind的屏幕截图,以防我错误地解释分析器结果(参见scanf()):我希望我说的是对的scanf()占用了我80.92%的运行时间。我使用cin>>int_variable_here读取输入,像这样:std::ios_base::sync_with_stdio(false);//SupposedlymakesI/Ofastercin>>NumberOfCities;cin>>NumberOfOldRoads;

c++ - 迭代中的指针算法是否溢出安全?

即使在较新的C++代码中,我也经常看到使用普通指针算法进行数组迭代。我想知道它们到底有多安全,使用它们是否是个好主意。考虑这个片段(如果你用calloc代替new,它也会在C中编译):int8_t*buffer=newint8_t[16];for(int8_t*p=buffer;p当buffer发生分配到地址0xFFFFFFF0时,这种迭代不会导致溢出并完全跳过循环吗(在32位地址空间中)或0xFFFFFFFFFFFFFFFF0(64位)?据我所知,这是一种非常不幸但仍有可能出现的情况。 最佳答案 这是安全的。C和C++标准明确允许