C++ 分段故障容器 #包括 #包括 #包括 #包括 #包括 使用名称空间std; 整数大小; typedef向量列表; typedef映射表; 无效显示(表格和t){ cout

C++ 分段故障容器 #包括 #包括 #包括 #包括 #包括 使用名称空间std; 整数大小; typedef向量列表; typedef映射表; 无效显示(表格和t){ cout,c++,dictionary,stl,C++,Dictionary,Stl,常见错误,reserve不会更改向量的大小,您需要resize。如下所示 #include <map> #include <vector> #include <string> #include <sstream> #include <iostream> using namespace std; int size; typedef vector<string> list; typedef map<string, l

常见错误,
reserve
不会更改向量的大小,您需要
resize
。如下所示

#include <map>
#include <vector>
#include <string>
#include <sstream>
#include <iostream>

using namespace std;

int size;

typedef vector<string> list;
typedef map<string, list> table;

void display(table &t){
  cout << "\t\tCar Model\t\tTotal sold unit\t\t Cost of each unit\n"<<endl;
  for(int i=0; i < size; i++){
   cout << i << "\t\t" << t["Car_Model"][i]
             << "\t\t" << (t["num"][i] + t["num_"][i])
             << "\t\t" << t["Cost"][i]
             << "\n";
  }
}

int main(){
  cout<<"Enter number of Car Models: "<<endl;
  cin>>size;
  table t;
  t["Car_Model"].reserve(size);
        for(int i = 0; i < size; i++){
            cout<<"Enter Car Model: ";
            cin>>t["Car_Model"][i];
            cout<<"Cost: ";
            cin>>t["Cost"][i];
            cout<<"No. of unit sold(2000-2010): ";
            cin>>t["num"][i];
            cout<<"No. of unit sold(2010-2020): ";
            cin>>t["num_"][i];
        }    
        display(t);
}
reserve
在不改变向量大小的情况下为向量分配空间。其目的是在使用
push_-back
或类似方法时防止昂贵的向量重新分配。但在这种情况下,由于您知道所需向量的大小,因此只需使用
resize
即可获得该大小


PS,TyBuff<代码>清单< /> >不是一个好主意。C++已经有了一个<代码> STD::列表< /COD>类型,所以使用TyPulf给程序提供另一个类型,叫做“代码>列表< /C>”非常混淆。

< P>常见的错误, Reale不会改变向量的大小,你想<代码>调整大小< /C> >。
#include <map>
#include <vector>
#include <string>
#include <sstream>
#include <iostream>

using namespace std;

int size;

typedef vector<string> list;
typedef map<string, list> table;

void display(table &t){
  cout << "\t\tCar Model\t\tTotal sold unit\t\t Cost of each unit\n"<<endl;
  for(int i=0; i < size; i++){
   cout << i << "\t\t" << t["Car_Model"][i]
             << "\t\t" << (t["num"][i] + t["num_"][i])
             << "\t\t" << t["Cost"][i]
             << "\n";
  }
}

int main(){
  cout<<"Enter number of Car Models: "<<endl;
  cin>>size;
  table t;
  t["Car_Model"].reserve(size);
        for(int i = 0; i < size; i++){
            cout<<"Enter Car Model: ";
            cin>>t["Car_Model"][i];
            cout<<"Cost: ";
            cin>>t["Cost"][i];
            cout<<"No. of unit sold(2000-2010): ";
            cin>>t["num"][i];
            cout<<"No. of unit sold(2010-2020): ";
            cin>>t["num_"][i];
        }    
        display(t);
}
reserve
在不改变向量大小的情况下为向量分配空间。其目的是在使用
push_-back
或类似方法时防止昂贵的向量重新分配。但在这种情况下,由于您知道所需向量的大小,因此只需使用
resize
即可获得该大小


PS,TyBuff<代码>列表不是一个好主意。C++已经有了一个<代码> STD::列表< /代码>类型,所以使用TyPulf给你的程序另一个类型叫List< /Cord>非常令人困惑。

我强烈地阻止你自己的类型命名为与现有的标准类型相同,尤其是当使用<代码>使用命名空间STD;< /Cord>。我强烈反对将您自己的类型命名为与现有标准类型相同的类型,尤其是在使用
和namespace std;
时。它可能会在未经接受的时刻咬到您。