Coder Social home page Coder Social logo

note's Introduction

操作系统

计算机网络

数据结构与算法

理论知识参考:

  • 《数据结构与算法分析》(C++版) Clifford A. Shaffer
  • 《算法》Robert Sedgewick & Kevin Wayne

数据库

Linux管理

C++


整形在16/32/64位平台下的大小:


C++运算符优先级表:

note's People

Contributors

arkingc avatar lllittletree avatar tikiliu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

note's Issues

C++对象模型 6.2

最后一部分的说法以及测试程序可以勘正一下,在较新的GCC版本中不再需要使用者特别处理。
GCC版本:gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11)
测试程序:

#include<iostream>
using namespace std;
class base{
public:
    base() {cout << "base constructor" << endl;}
    virtual ~base() {cout << "base destructor" << endl;}
};

class derived : virtual public base{
public:
    derived() {cout << "derived constructor" << endl;}
    virtual ~derived() {cout << "derived destructor" << endl;}
};

int main()
{
    base *arr = new derived[5];
    delete [] arr;
    return 0;
}

输出结果:

base constructor
derived constructor
base constructor
derived constructor
base constructor
derived constructor
base constructor
derived constructor
base constructor
derived constructor
derived destructor
base destructor
derived destructor
base destructor
derived destructor
base destructor
derived destructor
base destructor
derived destructor
base destructor

effective c++条款06

拒绝对象拷贝中第二个方法:使用delete,能否给出具体一点的解释。

建议在linux常用命令里面加上SSH相关的命令……

如果你或者你的公司/学校有一个linux服务器,SSH命令会变得很常用
比如我比较喜欢nohop nice -19,用这个开若干进程进行并行,可以保证程序在断开SSH链接之后继续运行
killall -u $USER,用于SSH自杀(清理所有自己打开的后台程序并退出登录)

关于 RB-Tree 迭代器的疑惑

您好,我正在编写 Js 模式下的类 STL 容器库 js-sdsl

对于 STL RB-Tree 中的 decrement 函数(迭代器的前移函数)存在一个疑问

当我向 Tree 中从小到大插入两个不同的值后,我会得到以下结构的 RB-Tree:

抽象图

其中 Root 节点和 Header 节点互为父子,Header 节点的左右节点分别指向插入的两个值,并且小的那个值会成为 Root 节点,大的会成为 Root 的右子节点

此时,当对指向 Root 节点的迭代器进行前移操作(decrement),会经过如下步骤:

  1. 判断当前不为 Header 节点,进行步骤 2
  2. 判断当前指针的左子节点为空,执行步骤 3
  3. 判断当前节点(Root)为父节点(Header)的左子节点(注意,此时 Header 的 LeftMost 指向树中最小节点,即 Root),于是将指针移至父节点(Header),重复步骤 3 直到不满足条件,执行步骤 4
  4. 显然由于 Root 节点和 Header 节点互为父子,最终经过步骤 3 指针重新指向 Root 节点

最终如下代码理应陷入死循环:

set<int> st { 1, 2 };
for (auto it = st.rbegin(); it != st.rend(); ++it) {
    cout << *it <<endl;
}

但实际上,上述代码能够正常运行,对此我感到很疑惑,我并没有看到 STL 代码中有任何特殊的处理,我对于 C++ 并不精通,请问 @arkingc 您能够帮助我理解这个问题吗?

感激不尽!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.