C++STL怎么初始化一个包含vector<unsigned short>的struct呢?
#include<iostream>#include<vector>#include<map>usingnamespacestd;structClosedTable{st...
#include<iostream>#include<vector>#include<map>using namespace std; struct ClosedTable
{
struct Table{
vector<unsigned short> CI;
int SC;
};
ClosedTable(int _cid,vector<unsigned short> _ci,int _sc)
{
Cid=_cid;
tb.CI=_ci;
tb.SC=_sc;
}
int Cid;
Table tb;
};typedef map<int,ClosedTable::Table> MyClosedMap;
pair<MyClosedMap::iterator,bool> p;
MyClosedMap m;int main(){ ClosedTable CT0=ClosedTable(0,0,0);//这一行的第二个0有错误吧!!
pair<int,ClosedTable::Table> pairCT0(CT0.Cid,CT0.tb);
p=m.insert(pairCT0);
if(!p.second)
{
cout<<"Fail!";
}return 0;} 展开
{
struct Table{
vector<unsigned short> CI;
int SC;
};
ClosedTable(int _cid,vector<unsigned short> _ci,int _sc)
{
Cid=_cid;
tb.CI=_ci;
tb.SC=_sc;
}
int Cid;
Table tb;
};typedef map<int,ClosedTable::Table> MyClosedMap;
pair<MyClosedMap::iterator,bool> p;
MyClosedMap m;int main(){ ClosedTable CT0=ClosedTable(0,0,0);//这一行的第二个0有错误吧!!
pair<int,ClosedTable::Table> pairCT0(CT0.Cid,CT0.tb);
p=m.insert(pairCT0);
if(!p.second)
{
cout<<"Fail!";
}return 0;} 展开
3个回答
2013-06-18
展开全部
// 因为你的第二个参数是vector<unsigned short>类型的
// 因此你就必须传递一个同类型的实参过去
// 下面就是先定义了一个vector<unsigned short>类型的变量
// 然后当做实参传入你的结构体的“构造函数”
vector<unsigned short> myVec;
ClosedTable CT0=ClosedTable(0,myVec,0);
// 因此你就必须传递一个同类型的实参过去
// 下面就是先定义了一个vector<unsigned short>类型的变量
// 然后当做实参传入你的结构体的“构造函数”
vector<unsigned short> myVec;
ClosedTable CT0=ClosedTable(0,myVec,0);
2013-06-18
展开全部
你把你的map输出改成下面这个样子就可以了。
对second的输出要特别处理,因为你的second是一个自定义的结构体
MyClosedMap::iterator iter;
for (iter = m.begin();
iter != m.end();
iter++)
{
// 输出first的值,也就是一个int
cout << "First = " << iter->first << endl;
// 输出second中的vector中的内容,也就是
// vector<unsigned short> CI中的内容
cout << "Second::CI = " << endl << "\t";
for (int i = 0; i < iter->second.CI.size(); i++)
{
cout << i + 1 << "-th" << iter->second.CI.at(i) << "\t";
}
// 输出second中的int的值,也就是SC
cout << endl << "Second::SC = " << iter->second.SC << endl;
}
对second的输出要特别处理,因为你的second是一个自定义的结构体
MyClosedMap::iterator iter;
for (iter = m.begin();
iter != m.end();
iter++)
{
// 输出first的值,也就是一个int
cout << "First = " << iter->first << endl;
// 输出second中的vector中的内容,也就是
// vector<unsigned short> CI中的内容
cout << "Second::CI = " << endl << "\t";
for (int i = 0; i < iter->second.CI.size(); i++)
{
cout << i + 1 << "-th" << iter->second.CI.at(i) << "\t";
}
// 输出second中的int的值,也就是SC
cout << endl << "Second::SC = " << iter->second.SC << endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-18
展开全部
vector<unsigned short> v; v.push_back(0);
ClosedTable CT0=ClosedTable(0,v,0);
改成这样试试~~
ClosedTable CT0=ClosedTable(0,v,0);
改成这样试试~~
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询