构造体可以这样定义调用吗

结构体可以这样定义调用吗可以这样定义结构体吗?struct data{int N int M //字符串对的个数 mapstring,

结构体可以这样定义调用吗
可以这样定义结构体吗?


struct data
{
int N; 
int M; //字符串对的个数 
map<string, string> word_map;//存储一些字符串对 
vector<string> line; //存储一行文本 

};

在main()函数里可以这样调用吗?

        cin>>data[j].N>>data[j].M;
        cout<<data[j].N<<data[j].M<<endl;
        for(int i=0;i<data[j].M;i++)
        {
        string first,second;
        cin>>first>>second;
        data[j].word_map.insert(make_pair(first,second));

        }
         string str;
         getline(cin,str);
         istringstream stream(str);
         string word;
         while(stream>>word)
         {
           data[j].line.push_back(word);                   
          }
struct vector string stream 存储
[解决办法]
不能,data是结构体,不能用作数组变量,你可以申明struct data datas[20];
[解决办法]
string first,second;
        cin>>first>>second;

         string str;
         getline(cin,str);
        cout<<str<<endl;

通过上面代码测试,最后会输出一个换行,也就是说cin对最后的换行符没有进行读取,而是留在了缓冲区中,所以getline读取的时候,会首先读取到换行,然后就返回了