首页 > 代码库 > 问题解决——在结构体中使用STL
问题解决——在结构体中使用STL
=====================声明==========================
本文原创,转载请明确的注明出处和作者,并保持文章的完整性(包括本声明部分)。
本文链接:
==================================================
至于为什么会使用这么奇葩的东西……为了部落的荣耀
----------------------------------------------------------------------------------------
在结构体中使用STL的set,比使用vector等要复杂一点,感觉是因为set的存储用到了树,所以要写“<”。
上示例代码。
#include <iostream> #include <set> using namespace std; struct AA { int a1; int a2; bool operator < (const AA& oDR) const { return a1<oDR.a1; } }; struct NN { std::set<AA> stSet; }; int main(int argc, char* argv[]) { NN stN1; for(int i=6;i>0;i--) { AA stA; stA.a1=i; stA.a2=10*i; stN1.stSet.insert(stA); } std::set<AA>::iterator it=stN1.stSet.begin(); std::set<AA>::iterator itEnd=stN1.stSet.end(); for(;it!=itEnd;it++) { printf("vector: a1=%d,a2=%d\n",it->a1,it->a2); } printf("sizeof(NN)=%d\n",sizeof(NN)); printf("sizeof(stN)=%d\n",sizeof(stN1)); ///////////////////////////////////////////////////////// NN stN2; stN2.stSet=stN1.stSet; stN1.stSet.clear(); it=stN2.stSet.begin(); itEnd=stN2.stSet.end(); for(;it!=itEnd;it++) { printf("vector: a1=%d,a2=%d\n",it->a1,it->a2); } printf("sizeof(NN)=%d\n",sizeof(NN)); printf("sizeof(stN)=%d\n",sizeof(stN2)); return 0; }
=====================分割线跟你说再见=======================
问题解决——在结构体中使用STL
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。