是否可以创建一个向量图,其中向量可以是任何类型?
键是一个字符串,值是任何类型的向量。
例如,第一个键可以映射到整数向量,第二个键可以映射到浮点数向量。这在c++中可能吗?
如果没有,我可以通过其他方式达到类似的效果吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
键是一个字符串,值是任何类型的向量。
例如,第一个键可以映射到整数向量,第二个键可以映射到浮点数向量。这在c++中可能吗?
如果没有,我可以通过其他方式达到类似的效果吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
好吧,你可以这样做:
但这不太可能是你真正想要的。你为什么认为你需要这个?
那么,您可以使用
std::map>
。Well, you could do it:
But it is very unlikely that this is what you actually want. Why do you think you need this?
Well, you could use a
std::map<std::string, boost::variant<GLfloat, GLushort>>
then.boost::任何解决方案对我来说都像是黑客。我建议您为渲染器研究面向对象的设计。
您需要的是一个具有字符串键和缓冲区作为值的映射,对吗?然后编写一个 Buffer 类,它可以在内部保存任何类型的 OpenGL 缓冲区,并让每个实例跟踪它所保存的缓冲区的类型。此类的数据存储可以是通用的
void*
,然后在需要将缓冲区发送到 OpenGL 时将其转换为正确的类型。然后,你的数据结构问题就完全解决了,你可以做:
祝你好运。
The boost::any solution seems like a hack to me. I recommend that you look into an object oriented design for your renderer.
What you need is a map that has string keys and buffers as values, correct? Then write a
Buffer
class, that can internally hold OpenGL buffers of any type, and make each instance keep track of what is the type of the buffer it holds. The data storage for this class could be a genericvoid*
that is then cast to the proper type when the buffer needs to be sent to OpenGL.Then, your data structure problem is fully resolved and you can do:
Good luck.
任何类型?您可以考虑使用 Boost.Any。那么你的类型将是:
Any type? You could consider using Boost.Any. Then your type would be:
向量
的值必须全部为同一类型T
,而map
的值必须全部为相同类型类型为V
,对于某些T
来说是vector
,所以不,不是开箱即用的,但您可以绕过该类型系统与 Boost.Any 库。A
vector<T>
's values must all be of the same typeT
and amap<K,V>
's values must all of typeV
which isvector<T>
for someT
, so no, not out of the box, but you can get around the type system with the Boost.Any library.