相关疑难解决方法(0)

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

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

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

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

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

c++ c++-faq

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

在这样的情况下我应该避免"转到"吗?

我正在创建一个"连接迭代器",即一个迭代器,它将遍历ints中的s int**.

它的构造函数需要:

  • 一个数组T**,表示每个子数组的开头.
  • 一个数组T**,表示每个子数组的结尾.

瞧,我遇到了一个goto似乎合适的情况.

但是我内心的某些东西尖叫着"不!" 所以我以为我会来这里问:

我应该尝试避免goto这种情况吗?(如果我这样做,它会提高可读性吗?)

#include <algorithm>

template<class T>
class lazy_concat_iterator
{
    // This code was meant to work for any valid input iterator
    // but for easier reading, I'll assume the type is: T**

    mutable T** m_endIt;              // points to an array of end-pointers
    mutable T** m_it;                 // points to an array of begin-pointers
    mutable bool m_started;   // have we started iterating?
    mutable T* …
Run Code Online (Sandbox Code Playgroud)

c++ goto

3
推荐指数
2
解决办法
258
查看次数

在 Linux 内核代码中使用 goto 没有意义

我正在浏览 Linux 源代码,在这里我偶然发现了这个功能:

static int check_free_space(struct bsd_acct_struct *acct)
{
    struct kstatfs sbuf;

    if (time_is_after_jiffies(acct->needcheck))
        goto out;

    /* May block */
    if (vfs_statfs(&acct->file->f_path, &sbuf))
        goto out;

    if (acct->active) {
        u64 suspend = sbuf.f_blocks * SUSPEND;
        do_div(suspend, 100);
        if (sbuf.f_bavail <= suspend) {
            acct->active = 0;
            pr_info("Process accounting paused\n");
        }
    } else {
        u64 resume = sbuf.f_blocks * RESUME;
        do_div(resume, 100);
        if (sbuf.f_bavail >= resume) {
            acct->active = 1;
            pr_info("Process accounting resumed\n");
        }
    }

    acct->needcheck = jiffies + ACCT_TIMEOUT*HZ;
out: …
Run Code Online (Sandbox Code Playgroud)

c goto linux-kernel

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

标签 统计

c++ ×2

goto ×2

c ×1

c++-faq ×1

linux-kernel ×1