【发布时间】:2017-02-17 11:14:47
【问题描述】:
有没有办法获得vector<pair<double,double>>的“.first”和“.second”的连续内存?我的意思是:
void func(int N, double* x, double* y)
{
for (int i = 0; i < N; ++i)
//do something to x[i] and y[i]
}
对于上述函数,我有一个vector<pair<double,double>> point 而不是vector<double> x, y。我猜这是不可能的。如果我有一个向量 x,y 那么我当然可以做 x.data() 和 y.data()。
【问题讨论】:
-
你不能改变函数来处理向量吗?如果不是,您必须遍历数组并填充一个新向量。或者,您可以为
vector<pair<double,double>>编写自己的迭代器,分别在第一个/第二个迭代。 -
你的意思是这样的吗:
&vec[0]来获取指向元素 0 的指针。但如果向量内部有一对,则仍然需要使用vec[0].first或vec[0].second。 -
顺便说一句,这些对在连续的内存中,但 x(和 y)不是
-
是的,我认为这是一个概念问题。也许不可能在
vector<pair<double,double>>中拥有所有x 值和所有y 值的连续内存,同时还保持vector<double>的连续内存。它们必须是物理上/概念上相反的想法。我们需要一个自定义容器或迭代器之类的东西。 -
请回答问题:你能改变功能吗?还有,为什么你有
vector<pair<double,double>>你能改变这个吗?
标签: c++ vector type-conversion