这个问题可能听起来相当简单,但这是我与另一位与我合作的开发人员的辩论.
我正在小心处理堆栈分配的东西,而不是堆分配它们.他正在跟我说话,看着我的肩膀并评论说这没有必要,因为他们的表现是明智的.
我一直认为堆栈的增长是恒定的时间,并且堆分配的性能取决于堆的当前复杂性(用于找到合适大小的孔)和解除分配(折叠孔以减少碎片,如如果我没有弄错的话,许多标准库实现在删除期间需要时间来完成此操作.
这让我觉得可能非常依赖于编译器.特别是对于这个项目,我使用Metrowerks编译器来实现PPC架构.对这种组合的洞察力将是最有帮助的,但总的来说,对于GCC和MSVC++,情况如何?堆分配不如堆栈分配高吗?没有区别吗?或者差异是如此微小,它变得毫无意义的微优化.
在不将字符串转换为全部大写或全部小写的情况下,在C++中进行不区分大小写的字符串比较的最佳方法是什么?
请说明这些方法是否符合Unicode,以及它们的可移植性.
我永远不会记得我是怎么做的,因为它对我来说很少见.但是在C或C++中,从标准输入读取字符而不等待换行符的最佳方法是什么(按回车键).
理想情况下,它也不会将输入字符回显到屏幕上.我只想捕捉击键而不影响控制台屏幕.
std::swap()在排序甚至分配期间被许多std容器(例如std::list和std::vector)使用.
但是std实现swap()非常普遍,而且对于自定义类型来说效率很低.
因此,通过std::swap()使用自定义类型特定实现进行重载可以获得效率.但是如何实现它以便std容器使用它?
单身人士是一个备受争议的设计模式,所以我对Stack Overflow社区对它们的看法感兴趣.
请提供您的意见的原因,而不仅仅是"单身人士是懒惰的程序员!"
这是一篇关于这个问题的相当不错的文章,虽然它反对使用Singletons: scientificninja.com:performant-singletons.
有没有人对他们有任何其他好文章?也许是为了支持单身人士?
我正在使用bjam为MinGW构建Boost(我正在使用System和FileSystem):
bjam --toolset=gcc stage
Run Code Online (Sandbox Code Playgroud)
它构建良好,但我希望能够静态链接到它(我必须有一个文件的最终产品)所以我试过:
bjam --link=static --toolset=gcc stage
Run Code Online (Sandbox Code Playgroud)
但我得到了相同的输出.有任何想法吗?
连续编辑第二个问题我在发帖后回答了几个问题:p猜我会把这个问题留给其他人.
bjam --build-type=complete --toolset=gcc stage
Run Code Online (Sandbox Code Playgroud)
肯定会建立动态和静态.
是否有人知道C++中的语言特性或技术,以防止子类过度使用父类中的特定方法?
class Base {
public:
bool someGuaranteedResult() { return true; }
};
class Child : public Base {
public:
bool someGuaranteedResult() { return false; /* Haha I broke things! */ }
};
Run Code Online (Sandbox Code Playgroud)
尽管它不是虚拟的,但仍然允许这样做(至少在我正在使用的Metrowerks编译器中),所有你得到的是关于隐藏非虚拟继承函数X的编译时警告.
在C++中人们发现使用String to Lower case/Upper case的最佳方法是什么?
C++不是一种英语编程语言,这个问题很复杂.有一个很好的多语言方法吗?
PHP有一个很棒的函数叫做htmlspecialcharacters(),你可以在其中传递一个字符串,并用它们的安全等价物替换所有HTML的特殊字符,它几乎是一站式消毒输入.非常好吗?
那么在任何.NET库中都有相同的东西吗?
如果没有,任何人都可以链接到任何代码样本或库这样做吗?
c++ ×8
performance ×2
string ×2
.net ×1
asp.net ×1
bjam ×1
boost ×1
build ×1
c ×1
c# ×1
c++-faq ×1
enums ×1
heap ×1
inputstream ×1
linker ×1
memory ×1
metrowerks ×1
optimization ×1
overriding ×1
php ×1
singleton ×1
stack ×1
stl ×1
unicode ×1