不知道错哪儿了,Vector的操作不会

didoleo didoleo 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
//片段:有个Hotel类,
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的方法,需要的朋友可以参考下

weixin_38616330

c++之vector容器erase操作

c++之vector容器erase操作,在容器列表中删除中间一行的操作过程,代码分为一维容器和二维容器操作两部分,详细见代码

minggto

二维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的头部时,自动窗口如下:

CodingLife99

C++ vector操作实现

主要介绍了C++ vector操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38614268

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位置进行删除的。 删除元素时,

weixin_38669793
评论 24
收藏 已收藏
分享
返回顶部
didoleo
C++ 语言 65,214 成员 250,514 内容