这个问题试图收集每年出版的数十本不良C++书籍中的少数珍珠.
与许多其他编程语言不同,这些编程语言经常从互联网上的教程中随处获取,很少有人能够快速学习C++,而无需学习编写精良的C++书籍.这样做太复杂了.事实上,它是如此庞大和复杂,有很多非常糟糕的C++书籍.我们并不是在谈论糟糕的风格,而是体育明显的事实错误和促进糟糕的编程风格.
请编辑接受的答案,以提供高质量的书籍和近似的技能水平 - 最好 在 C++聊天室讨论您的添加后.(如果他们不同意建议,常客可能会毫不留情地撤销你的工作.)添加一篇关于你亲自阅读/受益的每本书的简短描述/描述.随意讨论质量,标题等.符合标准的书籍将被添加到列表中.由C和C++用户协会(ACCU)撰写评论的图书都有指向评论的链接.
*注意:常见问题和其他资源可以在C++标签信息和c ++ - faq中找到.
如何使用new声明二维数组?
就像,对于"普通"数组,我会:
int* ary = new int[Size]
Run Code Online (Sandbox Code Playgroud)
但
int** ary = new int[sizeY][sizeX]
Run Code Online (Sandbox Code Playgroud)
a)不工作/编译和b)没有完成什么:
int ary[sizeY][sizeX]
Run Code Online (Sandbox Code Playgroud)
确实.
C书一直在讨论内存块,但我从未理解它们究竟是什么.内存块是一个数组吗?一个大的存储单元?例如:
malloc(2*sizeof(int)); /*This allocates a block*/
Run Code Online (Sandbox Code Playgroud) 当用户在main中输入新数据时,我试图实现数组动态扩展的解决方案,如下所示:
ComplexNumber** nizKompl = new ComplexNumber*[1];
bool unos = true;
while(unos){
cout << "Unesite novi kompleksni broj(realni imaginarni): ";
if(cin >> re >> im){
nizKompl[brojUnesenih] = new ComplexNumber(re,im);
++brojUnesenih;
ComplexNumber** nizTemp = new ComplexNumber*[brojUnesenih+1];
copy(nizKompl, nizKompl+brojUnesenih, nizTemp);
for(int i=0; i<brojUnesenih; ++i){
delete nizKompl[i];
}
delete [] nizKompl;
nizKompl = nizTemp;
} else {
cout << endl << endl;
unos = false;
}
}
Run Code Online (Sandbox Code Playgroud)
ComplexNumber是自定义类型.ComplexNumber工作正常但我遇到双重免费或损坏错误的问题,因为我正在输入新数据并在程序中创建新的ComplexNumbers.
有没有更好的方法来实现这一目标? 我需要使用自己的动态数组而不是std :: vector,因为它是出于教育目的.
据我所知,当您尝试释放已经免费的内存时,会发生双重自由错误.但似乎我无法解决这个问题,因为我看不到双重自由应该发生.
记忆中发生的事情我不知道吗?这是std :: copy的问题,因为我正在复制指针指针数组?
我真的很感激任何帮助或建议.谢谢!
所以我想创造一个方形世界的游戏。
开始游戏时,用户应该能够指定世界的大小。
世界被保存为短裤的二维数组。
const short gameSize = 4;
short world[gameSize][gameSize];
Run Code Online (Sandbox Code Playgroud)
在short gameSize
必须const
的,否则,我不能忍受gameSize
的大小world[][]
。
但是,这不允许我设置gameSize
为玩家希望的大小。
我想到了一些简单的东西
short gameSize = 0;
cout << "World size?" << endl;
cin >> gameSize;
short world[gameSize][gameSize];
Run Code Online (Sandbox Code Playgroud)
如前所述,这行不通。
在游戏中,以后将无法更改 gameSize 的值。
我怎么能做到这一点?
我在 C++ 程序中收到以下错误:
\n\n\n\n\n可变大小的数组类型 \xe2\x80\x98int [大小]\xe2\x80\x99 不是有效的模板\n 参数
\n
对于以下程序:
\n\n#include <iostream>\nusing namespace std;\n\ntemplate <typename T>\nvoid func (T& Array)\n{\n cout << "Hi";\n}\n\nint main ()\n{\n int size = 100;\n int arr [100];\n int arr1 [size];\n func (arr); // compiled\n func (arr1); // gives error\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n请帮我解决这个问题。我想从某个变量中获取数组的大小。\n提前致谢。
\n