【发布时间】:2022-10-20 22:37:21
【问题描述】:
我想我正面临着一些我认为在这里很常见的问题。
我想编写一个函数,它既可以接受对象容器(比如说std::vector),又可以接受指向这些对象的指针容器。
这样做的正确方法是什么?
此刻,我在想
int sum(std::vector<int *> v)
{
int s = 0;
for (int * i : v) s += *i;
return s;
}
int sum(std::vector<int> v)
{
std::vector<int *> vp;
for (size_t i = 0; i < v.size(); ++i)
vp[i] = &v[i];
return sum(vp);
}
但这似乎不太正确,不是吗?
【问题讨论】:
-
我会做相反的事情。使用法线向量求和,必要时从基于指针的转换。如果它的法线向量,这将具有更高的性能。我的意思是,如果只是求和,则无需添加重定向层。
标签: c++ pointers vector prototype function-prototypes