使用nullptr和零大小进行分配

时间:2014-02-18 12:25:28

标签: c++ stl

如果我是有一个向量v,按标准调用是否正常:

void setData(const uint8_t* p, size_t s) {
    v.assign(p, p+s);
}

setData(nullptr, 0);

一般情况下,XXX(InputIterator first, InputIterator last)时,如上所述调用STL函数distance(first,last) == 0总是可以的吗?

2 个答案:

答案 0 :(得分:1)

是。将nullptr值复制到另一个指针对象是可以的,这就是所有实现都可能做到的。它已被禁止超过结尾(在此处定义为开始==结束)或取消引用它。

答案 1 :(得分:1)

除了Potatoswatter所说的,C ++还使表达式nullptr + 0 valid。在C中情况并非如此。