gpt4 book ai didi

C++ 设计 : container of instances and pointers

转载 作者:行者123 更新时间:2023-11-28 01:11:49 25 4
gpt4 key购买 nike

我在想一件事。

我有 Polygon 类,它组成了一个 Line vector (这里是另一个类)

class Polygon
{
std::vector<Line> lines;

public:
const_iterator begin() const;

const_iterator end() const;

}

另一方面,我有一个函数,它计算一个指向线的指针 vector ,并且基于这些线,应该返回一个指向 Polygon 的指针。

 Polygon* foo(Polygon& p){

std::vector<Line> lines = bar (p.begin(),p.end());

return new Polygon(lines);

}

问题是:

我总是可以添加一个多边形( vector

有没有比取消引用 vector 的每个元素并将其分配给现有 vector 容器更好的方法?

//for line in vector<Line*> v
//vcopy is an instance of vector<Line>
vcopy.push_back(*(v.at(i))

我认为不是,但我真的不喜欢这种方法。

希望我能够说服该类的作者对其进行更改,但我现在无法根据该事实编写代码(而且我担心性能会受到影响)。

提前致谢。

最佳答案

您可以transform() 容器:

struct deref { // NO! I don't want to derive, LEAVE ME ALONE!
template<typename P>
const P& operator()(const P* const p) const { return *p; }
};

// ...
vector<Line*> orig; // assume full ...
vector<Line> cp(orig.size());
transform(orig.begin(), orig.end(), cp.begin(), deref());

关于C++ 设计 : container of instances and pointers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2612323/

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