相关疑难解决方法(0)

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

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

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

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

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

c++ c++-faq

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

如何使用new在C++中声明二维数组?

如何使用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++ arrays multidimensional-array dynamic-allocation

496
推荐指数
14
解决办法
87万
查看次数

什么是内存块?

C书一直在讨论内存块,但我从未理解它们究竟是什么.内存块是一个数组吗?一个大的存储单元?例如:

malloc(2*sizeof(int));  /*This allocates a block*/
Run Code Online (Sandbox Code Playgroud)

c

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

如何在C++中扩展动态分配的数组?

当用户在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的问题,因为我正在复制指针指针数组?

我真的很感激任何帮助或建议.谢谢!

c++ c++11

3
推荐指数
1
解决办法
210
查看次数

有没有办法在 C++ 中制作动态二维数组?

所以我想创造一个方形世界的游戏。

开始游戏时,用户应该能够指定世界的大小。

世界被保存为短裤的二维数组。

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++ multidimensional-array

2
推荐指数
1
解决办法
111
查看次数

可变大小的数组类型“int [size]”不是有效的模板参数

我在 C++ 程序中收到以下错误:

\n\n
\n

可变大小的数组类型 \xe2\x80\x98int [大小]\xe2\x80\x99 不是有效的模板\n 参数

\n
\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

c++ templates c++11

1
推荐指数
1
解决办法
2515
查看次数