VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1952|回复: 3

[求助] vector获取结构体元素的方法 这样写可以吗?

[复制链接]
36_avatar_middle
在线会员 发表于 2017-2-18 23:54:44 | 显示全部楼层 |阅读模式
5驿站币
获取vector中的结构体元素 返回   
由于结构体比较大 成员多  不太想一个一个赋值

tmpPic.a = iter->a
tmpPic,b = iter->b
...
tmpPic,z = iter->z

采用直接memcpy_s的方式 赋值  
不过迭代器像我下面那样用可以吗  虽然可以编译通过 不知道是否规范
如果不可以 还有什么更好的方法呢?
哪位老大指点一下 感激

void GetPlcFromData(DWORD dwData, OUT tagPlcInfo& tmpPlc)
{
        VecPlcInfo::iterator iter = m_vecPlc.begin();

        for (; iter!=m_vecPlc.end() ; ++iter)
        {
                if (dwData == iter->dwData)
                {
                        memcpy_s(&tmpPlc, sizeof(tagPlcInfo), &(*iter), sizeof(tagPlcInfo));                          //  这里
                }
        }
}





上一篇:来人150RMB移植中文键盘记录,源码我有
下一篇:VC/MFC 利用cookie可以get信息,不能post,怎么回事儿啊,高手帮帮忙
74_avatar_middle
在线会员 发表于 2017-2-19 10:03:34 | 显示全部楼层
可以這樣寫 但此時tagPlcInfo型別 必須是 POD 型別 否則 memcpy 不能保證正確性
36_avatar_middle
ico_lz  楼主| 发表于 2017-2-25 20:35:36 | 显示全部楼层
zuiwuchang 发表于 2017-2-19 10:03
可以這樣寫 但此時tagPlcInfo型別 必須是 POD 型別 否則 memcpy 不能保證正確性

还有什么更好的方法吗?
83_avatar_middle
在线会员 发表于 2017-3-1 21:44:41 | 显示全部楼层
这样是没什么问题的.想了一会,好象也没有什么更好的法子了. 不过if (dwData == iter->dwData){...;  break;}应当要跳出或直接返回吧,否则万一有多个相等时可能就出错或是效率低了.
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-7-24 00:49

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表