矢量与非特定大小的元素和元素的数量

时间:2014-12-15 10:28:53

标签: c++ visual-c++ vector properties propertygrid

我想为某些类中的每个点定义一些任意属性,但之前未定义属性的类型和数量。所以,我需要将它们存储在向量中,但我不知道如何定义向量,每个元素可以是非特定大小并且具有不同的字段数。课程如下:

class UnstructuredMesh
{
std::vector<size_t>     m_cellBegIndices;       //!< Cell Beginning Indices
std::vector<size_t>     m_faceBegIndices;       //!< Face Beginning Indices
std::vector<OSG::Pnt3f> m_points;               //!< Points
std::vector<????, ????> m_pointProperties;      //!< Point Properties
};

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

好的,考虑到我的评论,我想给出一个我建议的例子。很难确切知道你正在做什么,但这假设你用某种需要做不同事情的可执行组件来填充向量。

我看到你已经解决了你的问题,但下面的内容可能会让人们更容易理解。显然,矢量中的内存释放应该在实际应用程序中以更好的形式处理,并且不要忘记在现实生活中包含虚拟析构函数。但这会编译并运行。

#include "windows.h"
#include <tchar.h>
#include <vector>
#include <stdio.h>

class iface
{
public:
   virtual void execute() = 0;

};

class do_stuff_A : public iface
{
private:
   int A;
   int B;

public:
   do_stuff_A()
   {
      A = 1;
      B = 2;
   }

   void execute() override
   {
      printf("\nA is %d, B is %d", A, B);
   }
};

class do_stuff_B : public iface
{
private:
   double A;
   double B;
   double C;

public:
   do_stuff_B()
   {
      A = 1.1f;
      B = 2.2f;
      C = 3.2f;
   }

   void execute() override
   {
      printf("\nA is %f, B is %f, C is %f", A, B);
   }
};

int _tmain(int argc, _TCHAR* argv[])
{

   std::vector<iface*> my_vec;

   my_vec.push_back(new do_stuff_A());
   my_vec.push_back(new do_stuff_B());

   my_vec[0]->execute();
   my_vec[1]->execute();

   Sleep(3000);

   for (int i = 0; i < my_vec.size(); i++)
   {
      delete my_vec[i];
   }

   return 0;
}