在struct C ++中存储矢量

时间:2010-03-03 16:22:12

标签: c++ stl vector struct nested

为什么我不能这样做:

struct sName {
  vector<int> x;
};

只需要三个指针即可存储一个向量,所以我应该可以这样做吗?

3 个答案:

答案 0 :(得分:3)

mentioned在switch语句中失败了。你需要用一对额外的括号包起来:

int type = UNKNOWN;
switch(type)
{
  case UNKNOWN:
    cout << "try again" << endl;
    break;
  case KNOWN:
  { // Note the extra braces here...
    struct sName
    { 
      vector<int> x;
    } myVector; 
  } // and here
}

或者,您可能已经声明了结构,并且只是尝试声明和初始化局部变量。这不是struct独有的问题,只要您尝试初始化案例中的变量,它就会发生:

struct sName
{ 
  vector<int> x;
};

int type = UNKNOWN;
switch(type)
{
  case UNKNOWN:
    cout << "try again" << endl;
    break;
  case KNOWN:
  { // Note the extra braces here...
    sName myVector;
  } // and here
  case OTHER:
    int invalid = 0; // this will also fail without the extra pair of braces
    break;
}

答案 1 :(得分:2)

#include <vector>

using namespace std;

struct sName {
  vector<int> x;
};

int main()
{
return 0;
}

编译:

g++ -Wall 1.cpp

编译好。

您的代码似乎有什么问题?

答案 2 :(得分:0)

可以这样做。事实上,你上面的内容是正确的,并且工作正常(除了缺少的分号,std::中可能缺少std::vector。请改写你的问题,使其不与自相矛盾。