Cpp_Primer_Answers
Cpp_Primer_Answers copied to clipboard
《C++ Primer》第五版中文版习题答案
练习2.29中第2问不合法确实没有问题,但是理由应该是p3是指向const的指针所以不能给普通指针赋值,而const指针是可以给普通指针赋值的;在第4问中,答案应该是非法的,p3是指向const的const指针,题中应该假设该指针已经初始化,所以不能再重新给它赋值。
练习2.28中最后一题指针并没有指向任何变量,这是一个未被初始化的变量,但是是合法的。
练习要求使用迭代器将vector中的整数变为两倍,作者使用的是范围for循环。 我的程序代码如下,如有问题还请作者提出。谢谢! #include #include using namespace std; int main(void) { vector s(10,42); for (auto i = s.begin(); i != s.end(); i++) { *i = 2 * (*i); cout
https://github.com/huangmingchuan/Cpp_Primer_Answers/tree/925506ca53f7b2e8501bc8eaaee3dba8c03d9ec2/ch15#%E7%BB%83%E4%B9%A0154 a)错误,因为类不能派生它本身(中文版P533) b)正确。如果只是看P532“派生类的声明”这一节,会认为b是错误的“这是定义而不是声明”。而实际上,只要写在头文件.hpp里的都是声明,只不过声明分为了有定义的声明(比如该选项`class Derived : private Base { ... // 这里面是Derived类的接口的声明} ;`)和没有定义的声明(比如p532的最后一行代码和p533的第一行代码`class Bulk_quote;`)。up主可能是弄混了“实现”和“定义”的区别。实现是在.cpp资源文件里,而声明(无论是否定义)是在.hpp头文件里。
练习1.11此时的学习阶段并未引入for和if,应该使用已学的内容来实现。 下面是我的答案: ```cpp #include int main() { std::cout v1 >> v2; std::cout
问题链接: #85
题目要求: > 修改前一题的程序,使其只打印不重复的元素。你的程序应该使用 unique_copy。 给出的答案: ``` int main() { vector v; istream_iterator int_it(cin), int_eof; unique_copy(int_it, int_eof, back_inserter(v)); sort(v.begin(), v.end()); copy(v.begin(), v.end(), ostream_iterator(cout, " ")); cout
书中前面提到过隐藏的情况,但是没说非法,并且我写了个代码测试也是通过的 ``` #include using namespace std; typedef char Ctype; template Ctype f(Ctype a) { return a; } int main() { int a = 1; cout
exercise9_43.cpp和exercise9_44.cpp中有误,在`oldVal`是`s`的末尾的时候,无法替换。 - exercise9_43.cpp中:第9行中的条件应该修改为`curr != s.end()`; - exercise9_44.cpp中:第8行应该改为`for (size_t pos = 0; pos