由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++要是有null object就好了
相关主题
how do I reseat a reference?C++ Q04: template member
C++ 中 myobject * a =new myobject[n] 的问题再问C++初始化问题。
Is it possible to initialize container in initialization list?C++ template question
【C++】请问这样有没有memory leak?多谢c++ 是否也有class method??
请教一下这个template function在gcc下要怎么修改[合集] 又被羞辱了一把... (转载)
私有成员不能用类成员函数修改?请教C++
a simple question for C++ class用数组做参数,在函数内部如何知道数组的size?
C++小程序查错tempalte as the overloaded conversion operator
相关话题的讨论汇总
话题: aaa话题: vector话题: null话题: c++话题: object
进入Programming版参与讨论
1 (共1页)
L****8
发帖数: 3938
1
比如这种
std::vector A;
A[1] 就会抛异常 应该返回一个null object
p***o
发帖数: 1252
2
你定义好什么叫null object自己写一个这样的vector也花不了几分钟。

【在 L****8 的大作中提到】
: 比如这种
: std::vector A;
: A[1] 就会抛异常 应该返回一个null object

L****8
发帖数: 3938
3
怎么做 你举个例子

【在 p***o 的大作中提到】
: 你定义好什么叫null object自己写一个这样的vector也花不了几分钟。
s******u
发帖数: 501
4
原因就是为了效率
事实上你说的这个连异常都不抛,因为不管是抛异常还是返回null都需要做一个范围的
判断,这就是额外的操作了。C++设计的原则之一就是尽量的高效,比如
initialization list就是为了省下一次变量的初始化,等等。如果想方便或者安全,
自己加代码

【在 L****8 的大作中提到】
: 比如这种
: std::vector A;
: A[1] 就会抛异常 应该返回一个null object

L****8
发帖数: 3938
5
明明是弱点 非要说是效率

【在 s******u 的大作中提到】
: 原因就是为了效率
: 事实上你说的这个连异常都不抛,因为不管是抛异常还是返回null都需要做一个范围的
: 判断,这就是额外的操作了。C++设计的原则之一就是尽量的高效,比如
: initialization list就是为了省下一次变量的初始化,等等。如果想方便或者安全,
: 自己加代码

e***i
发帖数: 231
6
弱点的原因是因为权衡,而不是考虑不周。
取舍的思想在C++里就是尽量以效率为上,难免会牺牲其他方面。

【在 L****8 的大作中提到】
: 明明是弱点 非要说是效率
L****8
发帖数: 3938
7
来点干货 讲讲怎么设计null object

【在 e***i 的大作中提到】
: 弱点的原因是因为权衡,而不是考虑不周。
: 取舍的思想在C++里就是尽量以效率为上,难免会牺牲其他方面。

s******u
发帖数: 501
8
你拿到一个null object有毛用?

【在 L****8 的大作中提到】
: 来点干货 讲讲怎么设计null object
b****n
发帖数: 2
9
#include
#include
#include "boost/optional.hpp"
using namespace std;
template
class Vector : public std::vector {
public:
using TT = boost::optional;
TT operator[](size_t index) const noexcept {
if(index >= this->size()) {
return boost::none;
} else {
return std::vector::operator [](index);
}
}
};
int main() {
Vector AAA;
if(!AAA[0]) cerr << "none" << endl;
AAA.push_back(1);
if(AAA[0]) cerr << "AAA[0]: " << AAA[0] << endl;
}
L****8
发帖数: 3938
10
还是不行 达不到 matlab 用[] 代表一切null数据 nullobject的效果

【在 b****n 的大作中提到】
: #include
: #include
: #include "boost/optional.hpp"
: using namespace std;
: template
: class Vector : public std::vector {
: public:
: using TT = boost::optional;
: TT operator[](size_t index) const noexcept {
: if(index >= this->size()) {

t*****n
发帖数: 4908
11
matlab和c++不是一个量级的东西。前者仅仅用于教学,类似脚本语言。后者是企业开
发工具。没有任何比较的意义。

【在 L****8 的大作中提到】
: 还是不行 达不到 matlab 用[] 代表一切null数据 nullobject的效果
L****8
发帖数: 3938
12
弱点 承认就好

【在 t*****n 的大作中提到】
: matlab和c++不是一个量级的东西。前者仅仅用于教学,类似脚本语言。后者是企业开
: 发工具。没有任何比较的意义。

w***x
发帖数: 105
13
弄清楚事情再抱怨, 不然闹笑话。去看vector::at的帮助。
L******g
发帖数: 1371
14
操, 你就不可以check一下vector.empty()
1 (共1页)
进入Programming版参与讨论
相关主题
tempalte as the overloaded conversion operator请教一下这个template function在gcc下要怎么修改
C++ vector 到底能多大私有成员不能用类成员函数修改?
static vector 怎么 initialize ?a simple question for C++ class
C++: What is the difference between the two approaches?C++小程序查错
how do I reseat a reference?C++ Q04: template member
C++ 中 myobject * a =new myobject[n] 的问题再问C++初始化问题。
Is it possible to initialize container in initialization list?C++ template question
【C++】请问这样有没有memory leak?多谢c++ 是否也有class method??
相关话题的讨论汇总
话题: aaa话题: vector话题: null话题: c++话题: object