不知道错哪儿了,Vector的操作不会
class Hotel {
public:
int hotel_code;
char hotel_name[50];
char hotel_city[50];
int total_regular_rooms;
double tariff_regular_room;
int available_regular_rooms;
int total_deluxe_rooms;
double tariff_deluxe_room;
int available_deluxe_rooms;
}
//.....
//省略
//.....
vector<Hotel> Vh(1);
Hotel h;
ofstream OutputFile;
ifstream InputFile;
//....前面从cin读进了几条Hotel的记录然后准备望文件里写.(不知道Vh.size()这个有没问题,
我明明只输入了一条记录,但Vh.size()返回的却是2,总是成倍的???????
)
for(int n=0;n<Vh.size();n++){
OutputFile.write((char*)&Vh[n],sizeof(Vh[n]));
}
InputFile.read((char*)&h,sizeof(h));
while(!InputFile.eof())
{
Vh.push_back(h);
InputFile.read((char*)&h,sizeof(h));
}
InputFile.close();
InputFile.clear();
//下面我输出从文件里读出来的记录,下面的内容是对的,但是老是会在前面先打出一大堆乱码来,
//why??
for(int n=0;n<Vh.size();n++){
cout<<Vh[n].hotel_code<<endl;
cout<<Vh[n].hotel_name<<endl;
cout<<Vh[n].hotel_city<<endl;
}
谢谢各位老大.
相关推荐
详解C++中的vector容器及用迭代器访问vector的方法
使用迭代器iterator可以更方便地解引用和访问成员,当然也包括vector中的元素,本文就来详解C++中的vector容器及用迭代器访问vector的方法,需要的朋友可以参考下
c++之vector容器erase操作
c++之vector容器erase操作,在容器列表中删除中间一行的操作过程,代码分为一维容器和二维容器操作两部分,详细见代码
二维vector,clear()操作请慎重,当心遇到vector subscript out of range问题
二维vector 今天想要用vector实现二维数组的功能,尝试了把二维vector.谁知道刚上手就遇到了雷. 代码的形式大致如下: vector<int>>vv(3); vv.clear(); for (int i = 0; i < 3; i++) vv[i].push_back(0); 因为要重复使用该二维vector,所以进行了清空操作.然而却遇到了问题:vector subscript out of range 原因 后来在单步调试时发现了,clear()会让二维vector的size变成0,之前声明的3个一维数组的结构遭到破坏.(但可以看到它的capacity容量还是之前的值,这个后面会讲到). 执行到for的头部时,自动窗口如下: 如何解决 对上述代码做下改变: vector<int>>vv(3); vv.clear(); vv.resize(3); for (int i = 0; i < 3; i++) vv[i].push_back(0); 相当于把外层的vector的长度又恢复到了之前的值. 同样是执行到for的头部时,自动窗口如下:
C++ vector操作实现
主要介绍了C++ vector操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
C++中vector容器的常用操作方法实例总结
1 获得容器最后一个元素 —— 使用 back或rbegin 取得 // back、rbegin 有常量和引用两种形式 std::vector<int> myVector; myVector.back()=3; std::vector<int>::reverse_iterator tailIter; tailIter=myVector.rbegin(); *tailIter=3 2 删除某元素 需要删除某位置的元素,应使用iterator遍历, 不应使用at(i) 方式遍历,因为删除元素时,是根据iterator位置进行删除的。 删除元素时,


