【发布时间】:2019-11-19 08:25:48
【问题描述】:
我做了一些最小的代码
vector<int> items = {1, 2, 5, 0, 7};
int& getAtSafe(unsigned n) {
if (n < items.size() && items[n] != 5) return items[n];
else // ???
}
但是当我们找不到需要的项目时如何返回 null 呢?
P.S.原来的任务是搜索属性等于的项目。
不接受异常变体。我不需要暂停程序。
举个例子,用户输入index,每次输入错误,用户都会得到“Bad input”
【问题讨论】:
-
C++ 中没有空引用,这不是 Java。为什么你不使用
std::vector::at(),这正是你想要做的? -
引用总是必须引用一些有效的地址。如果您尝试获得其他东西(通过肮脏的黑客),那么您将处于未定义行为的领域!
-
例外!=“暂停程序”。向用户发出“错误输入”信号是异常的有效用例(当然调用代码必须捕获它)
-
没有问题。也许您误解了异常的工作原理,这值得提出一个不同的问题
-
异常可能比你想象的更有趣,你可以对你的向量进行多次访问,只需放置一个大的try-catch。错误处理你只需要一次。当然,并不总是合适的,但如果,非常方便......
标签: c++ vector return return-value