相关疑难解决方法(0)

最终C++书籍指南和列表

这个问题试图收集每年出版的数十本不良C++书籍中的少数珍珠.

与许多其他编程语言不同,这些编程语言经常从互联网上的教程中随处获取,很少有人能够快速学习C++,而无需学习编写精良的C++书籍.这样做太复杂了.事实上,它是如此庞大和复杂,有很多非常糟糕的C++书籍.我们并不是在谈论糟糕的风格,而是体育明显的事实错误促进糟糕的编程风格.

请编辑接受的答案,以提供高质量的书籍和近似的技能水平 - 最好 C++聊天室讨论您的添加.(如果他们不同意建议,常客可能会毫不留情地撤销你的工作.)添加一篇关于你亲自阅读/受益的每本书的简短描述/描述.随意讨论质量,标题等.符合标准的书籍将被添加到列表中.由C和C++用户协会(ACCU)撰写评论的图书都有指向评论的链接.

*注意:常见问题和其他资源可以在C++标签信息.

c++ c++-faq

4246
推荐指数
1
解决办法
224万
查看次数

cplusplus.com有什么问题?

对于这个问题,这可能不是一个非常合适的论坛,但是让我试一试,冒着被搬走的风险.

C++标准库有几个参考,包括非常有价值的ISO标准,MSDN,IBM,cppreferencecplusplus.就个人而言,在编写C++时,我需要一个具有快速随机访问,短加载时间和使用示例的引用,并且我一直在发现cplusplus.com非常有用.但是,我一直在SO上听到关于该网站的负面看法,所以我想具体说明:

cplusplus.com提供的错误,误解或错误建议有哪些?使用它来做出编码决策有哪些风险?

让我补充一点:我希望能够通过标准的准确报价在这里回答问题,因此我想发布可立即使用的链接,而cplusplus.com将是我选择的网站,如果不是这个问题.

c++

192
推荐指数
4
解决办法
2万
查看次数

如何安全地将对象(尤其是STL对象)传入DLL或从DLL传递?

如何将类对象(尤其是STL对象)传递给C++ DLL?

我的应用程序必须以DLL文件的形式与第三方插件交互,我无法控制这些插件构建的编译器.我知道STL对象没有保证ABI,我担心我的应用程序会导致不稳定.

c++ windows dll stl abi

99
推荐指数
4
解决办法
3万
查看次数

为什么在C++ 17中使用std :: make_unique?

据我所知,引入了C++ 14 std::make_unique,因为由于没有指定参数评估顺序,这是不安全的:

f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A
Run Code Online (Sandbox Code Playgroud)

(说明:如果评估首先为原始指针分配内存,则g()std::unique_ptr构造之前抛出调用和异常,然后内存泄漏.)

呼叫std::make_unique是一种约束呼叫顺序的方法,从而使事情变得安全:

f(std::make_unique<MyClass>(param), g());             // Syntax B
Run Code Online (Sandbox Code Playgroud)

从那以后,C++ 17澄清了评估顺序,使得Syntax A也安全,所以这里是我的问题:在C++ 17中仍然有理由使用std::make_uniqueover std::unique_ptr的构造函数吗?你能举一些例子吗?

截至目前,我能想象的唯一原因是它只允许输入MyClass一次(假设您不需要依赖多态std::unique_ptr<Base>(new Derived(param))).但是,这似乎是一个非常弱的原因,特别是当构造函数std::make_unique不允许指定删除器时std::unique_ptr.

而且为了清楚起见,我并不是主张std::make_unique从标准库中删除(至少为了向后兼容而保持它有意义),而是想知道是否仍然存在强烈倾向于它的情况std::unique_ptr

c++ unique-ptr c++17

86
推荐指数
4
解决办法
6688
查看次数

hash_map是STL的一部分吗?

快速问题... hash_map是STL的一部分吗?

c++ stl hashmap

59
推荐指数
4
解决办法
9万
查看次数

有什么有趣的C/C++库可供使用?

我正在寻找一些新的库以及C和C++.在过去的大部分时间里,我"偶然"偶然发现了一些 - 他们中的大多数人在我参与的项目中都有很好的用处.

库应该在Mac OS X和Linux/POSIX上运行,也可能在Windows上运行.

  • Lua - 用于配置文件和基本应用程序脚本的最小且快速的脚本引擎.
  • V8 - Google引擎的快速JavaScript,类似于WebKit的JavaScriptCore.
  • Cairo - 一个很好的graphcis库,类似于Mac OS X上的QuickDraw/Quartz.
  • ZBar - 条形码扫描仪库,允许扫描照片/图像/视频流以获取条形码并返回其值.
  • ZLib - 用于数据流的非常紧凑的压缩库.也使用了zziblib和minizip.
  • DynaPDF - 易于使用的PDF生成库.
  • libusb - 通用USB库,允许便携式访问USB设备(我用它来编写自定义POS打印机的基本驱动程序).
  • WebKit - 如果您想呈现HTML/Web内容并在应用程序中使用它来为您的用户提供"更丰富"的用户体验,这是一个非常好的.
  • Qt4 - 各种桌面(可能是移动)开发的通用框架.花了很多时间 - 不知道我怎么会忘记这一点.;)

这应该标记为社区维基.如果您有兴趣添加,请更新!

谢谢!


更新1

我不是在寻找像Boost或STL这样的"生产力"库.相反,我正在寻找随机类型的"有趣的新东西" - 无论是图形库,脚本库,网络甚至MOD/MIDI播放库.对不起,我之前没说清楚.

c c++ posix libraries

45
推荐指数
5
解决办法
1万
查看次数

std :: string是STL的一部分吗?

(当我说STL时,我说的是围绕容器,迭代器,算法和仿函数的模板库.)
在认为std::string大多数行为像普通容器,带有beginend函数(包括迭代器)之后,我想到了这个问题.一个size通过它们的迭代(例如,功能,并使用所有这些对于在容器上的工作正常STL算法的可能性/范围transform,sort,find等等).

然而,与此同时,它本身并不是容器,因为它不适合存储任意数据的容器.此外,它包含的数据操作主要是通过成员函数一样substr,find_first_of等等,而真正的容器不这样做,让算法处理的.

此外,cplusplus参考站点和C++标准不会std::string与真实容器一起列出,而是列在一个不同的类别中.
但是,在SGI的STL站点上,basic_string(并因此stringtypedef)与另一个容器一起提及,并且basic_string引用站点声明它属于"容器"类别.

现在我的问题是,string实际上是STL的一部分还是它本身就是一个独特的库?
如果它现在属于STL,它在Stepanov开发的原始STL中是否有所不同?

c++ string history stl

36
推荐指数
2
解决办法
9312
查看次数

与win32 CRITICAL_SECTION相比,std :: mutex的性能

性能如何std::mutex相比CRITICAL_SECTION?它是否相提并论?

我需要轻量级同步对象(不需要是一个进程间对象)是否有任何接近CRITICAL_SECTION其他的STL类std::mutex

c++ synchronization mutex stl thread-safety

35
推荐指数
2
解决办法
2万
查看次数

为什么sizeof(std :: string)只有八个字节?

为什么std::string尺寸由sizeof(std::string)屈服确定8
我认为这应该不仅仅是8因为它必须有一个int(sizeof(int) == 8在我的机器上)数据成员给予std::string::length()std::string::size()在O(1)和可能是一个char*字符.

c++

31
推荐指数
2
解决办法
9644
查看次数

什么是迭代器?

当我尝试使用接受"general iterator"的ctor编写C++类模板时,会出现此问题.我不知道在这里使用general这个词是否合适,但我的意思是它可以像STL容器一样接受迭代器.

换句话说,我对迭代器感到困惑.似乎所有STL容器都具有相同类型的迭代器,那么该类型是什么?它只是指针吗?还是更复杂的东西?但是STL容器确实接受普通指针.

(我想将它与Iterator<T>in 进行比较Java,这很简单,只是一个类)

c++ iterator

30
推荐指数
2
解决办法
3571
查看次数