【发布时间】:2015-09-08 07:51:19
【问题描述】:
一些高级语言具有此功能,我正在尝试在 C++ 中实现。我不确定是否有一个图书馆已经在某个地方这样做了,但如果有的话,它会为我省去很多麻烦。无论如何,这就是我想要完成的:
假设我有一个结构向量,其中有一个 double 和一个 int 作为成员,并且我有另一个 int 向量,它表示我想要保留的结构向量中元素的索引。
typedef struct
{
double x;
int y;
}s;
std::vector<s> v;
std::vector<int> inds;
有没有办法以与此类似的方式使用索引向量来实现访问结构中的元素,或者它是否已在其他地方实现?
std::vector<double> dResult = v[inds].x;
std::vector<int> iResult = v[inds].y;
如果能够以这种方式访问所有元素也很好:
std::vector<double> d = v.x;
这些事情可能吗?
【问题讨论】:
-
你想构造
iResult和dResult这两个向量吗?以后要保留v和inds吗?如果是这样,您是否担心这两组向量稍后会发散? -
请不要在 C++ 中使用 typedef struct
-
v 应该保留,我可能不在乎 inds 会发生什么。 dResult 和 iResult 应始终包含 v 成员的子集,并且可能不会被修改。但是,我可能会寻找 dResult 和 iResult 的最大值或最小值。
标签: c++ vector operator-overloading