Questions tagged «c++-faq»

提供协作式,社区编辑的C ++常见问题解答



12
C ++:“ std :: endl”和“ \ n”
许多C ++书籍都包含这样的示例代码... std::cout << "Test line" << std::endl; ...所以我也总是这样做。但是,我已经从工作的开发人员那里看到了很多这样的代码: std::cout << "Test line\n"; 是否有技术上的理由要优先于另一个,还是仅仅是编码风格的问题?

6
迭代器失效规则
C ++容器的迭代器失效规则是什么? 最好是摘要列表格式。 (注意:这本来是Stack Overflow的C ++ FAQ的一个条目。如果您想批评以这种形式提供FAQ的想法,则可以在开始所有这些操作的meta上进行发布。)该问题在C ++聊天室中进行监控,该问题最初是从FAQ想法开始的,所以提出这个想法的人很可能会读懂您的答案。)
543 c++  c++11  iterator  c++17  c++-faq 

5
如何在C ++中使用数组?
C ++从C继承了数组,几乎可以在任何地方使用它们。C ++提供更易于抽象使用和更不容易出错(std::vector<T>因为C ++ 98和std::array<T, n>自C ++ 11),因此需要对阵列不会出现相当经常,因为它在C.确实但是,当读取遗留编写代码或与用C编写的库进行交互,您应该对数组的工作原理有把握。 该常见问题解答分为五个部分: 类型级别的数组和访问元素 数组创建和初始化 分配和参数传递 多维数组和指针数组 使用数组时的常见陷阱 如果您觉得本常见问题解答中缺少重要的内容,请写一个答案并将其链接为附加部分。 在下文中,“数组”表示“ C数组”,而不是类模板std::array。假定具备C声明符语法的基本知识。请注意,面对异常,手动使用new和delete如下所述是非常危险的,但这是另一个FAQ的主题。 (注意:这本来是Stack Overflow的C ++ FAQ的一个条目。如果您想批评以这种形式提供FAQ的想法,则可以在开始所有这些操作的meta上进行发布。)该问题在C ++聊天室中进行监控,该问题最初是从FAQ想法开始的,所以提出这个想法的人很可能会读懂您的答案。)

5
“ STL”和“ C ++标准库”有什么区别?
有人引起了我的注意,这篇文章声称(我的意思是) STL术语被误用来指代整个C ++标准库,而不是指从SGI STL中获得的部分。 (...)它指的是“ STL”,尽管实际上仍然很少有人使用STL(这是SGI设计的)。 C ++标准库的某些部分是基于STL的,因此很多人(包括数位作者和臭名昭著的cplusplus.com)仍然将这些部分称为“ STL”。但是,这是不准确的。实际上,C ++标准从不提及“ STL”,并且两者之间存在内容差异。 (...)“ STL”很少用于指代基于SGI STL的stdlib的位。人们认为这是整个标准库。它被放在简历上。这是一种误导。 我几乎不了解C ++的历史,因此我无法判断本文的正确性。我应该避免使用术语STL吗?还是这是一个孤立的意见?

30
C ++中的struct和class有什么区别?
这个问题已经在C#/。Net上下文中提出过。 现在,我想学习C ++中的结构和类之间的区别。请讨论技术差异以及在OO设计中选择一个或另一个的原因。 我将从一个明显的区别开始: 如果不指定public:或private:,则默认情况下结构的成员是公共的;默认情况下,类的成员是私有的。 我确信在C ++规范的晦涩之处可以找到其他差异。
439 c++  oop  class  struct  c++-faq 

6
使用std :: forward的主要目的是什么,它可以解决哪些问题?
在完善的转发,std::forward是用来转换指定的右值引用t1,并t2以不具名rvalue引用。这样做的目的是什么?inner如果我们将t1&保留t2为左值,对调用的函数有何影响? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2)); }

6
C ++ 11右值和移动语义混淆(返回语句)
我试图理解右值引用并移动C ++ 11的语义。 这些示例之间有什么区别,哪些将不进行矢量复制? 第一个例子 std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); 第二个例子 std::vector<int>&& return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector(); 第三个例子 std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector();


6
编译/链接过程如何工作?
编译和链接过程如何工作? (注意:这本来是Stack Overflow的C ++ FAQ的一个条目。如果您想批评以这种形式提供FAQ的想法,则可以在开始所有这些操作的meta上进行发布。)该问题在C ++聊天室中进行监控,该问题最初是从FAQ想法开始的,所以提出这个想法的人很可能会读懂您的答案。)

12
在哪里可以找到最新的C或C ++标准文档?
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 Наэтотвопросестьответына 堆栈溢出нарусском:ГдевзятьстандартC ++? 对于许多问题,答案似乎可以在“标准”中找到。但是,我们在哪里找到呢?最好在线。 有时,谷歌搜索有时会徒劳无功,特别是对于C标准,因为它们淹没在编程论坛上的讨论中。 首先,由于这些是我现在正在搜索的内容,因此在哪里有不错的在线资源: C89 C99 C11 C ++ 98 C ++ 03 C ++ 11 C ++ 14 C ++ 17
394 c++  c  standards  c++-faq 


11
解决由于类之间的循环依赖而导致的构建错误
我经常发现自己处于这样的情况下,由于一些错误的设计决策(由其他人做出的:)导致C ++项目中出现多个编译/链接器错误,这导致不同头文件中C ++类之间的循环依赖(也可能发生)在同一文件中)。但是幸运的是(?)发生的次数并不多,以至于我下次再次遇到该问题时仍记得该问题的解决方案。 因此,为了将来方便起见,我将发布一个具有代表性的问题及其解决方案。当然,更好的解决方案是受欢迎的。 A.h class B; class A { int _val; B *_b; public: A(int val) :_val(val) { } void SetB(B *b) { _b = b; _b->Print(); // COMPILER ERROR: C2027: use of undefined type 'B' } void Print() { cout<<"Type:A val="<<_val<<endl; } }; B.h #include "A.h" class B …

6
我应该在C ++中使用哪种XML解析器?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 2年前关闭。 我有需要解析的XML文档和/或需要构建XML文档并将其写入文本(文件或内存)。由于C ++标准库没有为此提供的库,我应该使用什么? 注意:这旨在作为对此的权威性C ++-FAQ式问题。是的,它是其他人的副本。我并没有简单地提出其他问题,因为它们倾向于要求一些更具体的内容。这个问题比较笼统。
344 c++  xml-parsing  c++-faq 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.