【发布时间】:2018-09-09 10:36:33
【问题描述】:
使用 sfml,出于某些原因,我想将我的顶点存储在这样的列表中:
std::list<sf::Vertex> shape{};
shape.push_back(sf::Vertex(...);
但我真的不知道如何拨打电话
window.draw(...);
我猜应该是这样的:
window.draw(shape.begin(), shape.size(), sf::LineStrip);
现在我猜它不起作用的原因是因为列表不支持随机访问......有人知道吗?
【问题讨论】:
-
你为什么不改用
std::vector? -
因为我要在整个过程中添加很多顶点,所以从效率来看,列表似乎更好?我实际上找到了我必须做的解决方案,比如 draw(&(*shape.begin()), ...,...)
-
“我实际上找到了我必须做的解决方案,例如 draw(&(*shape.begin()), ...,...)” - 现在如果
shape不是向量,则您有未定义的行为。 -
“列表似乎更好” - 你应该实际对这些东西进行基准测试,而不是仅仅假设。我已经好几年没用过链表了,因为动态数组(比如
std::vector)在大多数情况下表现得更好(而且添加的成本可以很容易地用reserve优化) -
我会考虑您的所有建议。我还有很多东西要学,有时我很固执。感谢你们花时间解释这一切。
标签: c++ sfml vertex vertices stdlist