还是昨天那个结构体与容器的问题,代码很简单

LensonYuan 2016-10-26 09:51:03
如题,第一个vector存入正常,第二个vector存的数据就不正常了,这是怎么回事??下为完整测试代码:
#include <iostream>
#include <string>

#include <vector>

using namespace std;


int main()
{

//
struct DI
{
int num1;
int num2;
}_dI1;
vector<DI> vecDI;
_dI1 = {5,7};
vecDI.push_back(_dI1);

//操作第二个文件
struct DI2
{
string str1;
int num2;
}_dI2;

vector<DI2> vecDI2;
_dI2 = {"why not?",250};
vecDI2.push_back(_dI2);


system("PAUSE");
return 0;

}
...全文
195 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2016-10-27
  • 打赏
  • 举报
回复
"why not?"
引用 4 楼 A15216110998 的回复:
[quote=引用 3 楼 paschen 的回复:] 我帮你测试正常啊 你试这样:_dI2 = {(string)"why not?",250};
执行到_dI2 = {"why not?",250};这行,所有变量都正常,唯独压入vecDI2时异常,变量显示压入_dI2时,直接存了四行的异常数据的{num1,num2};但是把“//操作第二个数据”以前的注释掉,vecDI2又是正常的。唯独两次操作不同的结构体容器会出错!!!我在怀疑是不是vector内存管理机制的问题。。。[/quote] 和这应该没关系,你改成_dI2 = {(string)"why not?",250}; 也不行吗?
LensonYuan 2016-10-27
  • 打赏
  • 举报
回复
引用 3 楼 paschen 的回复:
我帮你测试正常啊 你试这样:_dI2 = {(string)"why not?",250};
执行到_dI2 = {"why not?",250};这行,所有变量都正常,唯独压入vecDI2时异常,变量显示压入_dI2时,直接存了四行的异常数据的{num1,num2};但是把“//操作第二个数据”以前的注释掉,vecDI2又是正常的。唯独两次操作不同的结构体容器会出错!!!我在怀疑是不是vector内存管理机制的问题。。。
paschen 版主 2016-10-26
  • 打赏
  • 举报
回复
我帮你测试正常啊 你试这样:_dI2 = {(string)"why not?",250};
AlbertS 2016-10-26
  • 打赏
  • 举报
回复
你按照1楼的方法,分开赋值试试 _dI2 = {"why not?",250}; _dI2.str1 = "why not?"; _dl2.num2 = 250
  • 打赏
  • 举报
回复
_dI2 = {"why not?",250}; _dI2.str1 = "why not?"; _dl2.num2 = 250

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧