gpt4 book ai didi

c++ - 我可以将 0 传递给需要 vector 类型参数的函数吗?

转载 作者:行者123 更新时间:2023-11-27 22:35:17 35 4
gpt4 key购买 nike

我有这样一个函数:

void foo(int checkInt, vector<int> vect, int x) {
EXECx = x;
EXECcheckInt = checkInt;
if (EXECcheckInt > 0) {
//do something to vect
} else {
Timer.rset();
}
}

可以看出,vect除非checkInt大于 0。所以,如果我想传递 checkInt 0,那么我似乎不必担心 vect .

因此在我看来,我需要一些虚拟值才能进入 vect 的这个函数。 ,那么什么值会起作用,还是我需要传递一个虚拟 vector ?我的想法是只传递 0,但我猜这是行不通的。

我试着转换它,如 foo(0,(vector<int>)0,0) , 但令我惊讶的是,当我尝试打印出 vect ,它只是显示为空(里面没有 0),函数是这样写的:

void foo(int checkInt, vector<int> vect, int x) {
for (auto i = vect.begin(); i != vect.end(); ++i)
std::cout << *i << ' ';
}

我该怎么办?

我正在使用 C++98。

最佳答案

代码看起来像是函数决定是否使用 vector ,但您想要做的表明是调用者决定是否使用 vector 。到底是谁?我认为你有一个设计问题,修复它然后你就不需要再将 0 转换为 vector 了。 (例如制作两个函数,一个以 vector 为参数,另一个不以 vector 为参数)

无论如何,你可能想看看std::optional它仅在 C++17 之后可用,但它可能会给您一些灵感,让您了解如何以干净的方式处理这种情况。 “肮脏”的方法是传递一个指针,然后检查它是否是函数内部的 nullptr

您的转换不会创建一个填充有 0 的 vector ,而是一个大小为 0 的 vector 。

关于c++ - 我可以将 0 传递给需要 vector 类型参数的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55278416/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com