取出若干元素,满足指定要求的元素一定被取出
- C/C++ code
class Sample{public: string m_szaddress ; int m_iage ;}; vector<Sample> SampleVector ; Sample Sample1; Sample1.m_iage = 10 ; Sample1.m_szaddress = "北京朝阳区" ; SampleVector.push_back(Sample1) ; Sample Sample2; Sample2.m_iage = 20 ; Sample2.m_szaddress = "北京" ; SampleVector.push_back(Sample2); Sample Sample3; Sample3.m_iage = 30 ; Sample3.m_szaddress = "天津" ; SampleVector.push_back(Sample3); Sample Sample4; Sample4.m_iage = 40 ; Sample4.m_szaddress = "四川成都" ; SampleVector.push_back(Sample4); Sample Sample5; Sample5.m_iage = 50 ; Sample5.m_szaddress = "四川重庆" ; SampleVector.push_back(Sample5); //...在SampleVector中取出n个元素,这些元素m_szaddress满足条件:比如含“北京”或者“天津”。
若满足条件的个数m大于n,则任意n个满足条件的元素被取出。
若满足条件的个数m小于或者等于n,则满足条件的m个元素都被取出,其余 n-m个元素为一些不满足条件的其它元素
[解决办法]
写个循环判断一下,记录下数量不就可以了
[解决办法]
使用算法find_if,定义谓词。
[解决办法]
find
[解决办法]
可以用map实现,以条件为键值,值为一个vector对象,map<string,vector<int>>。根据条件遍历SampleVector,把满足条件的记录的下标存入vector对象中。这样就可以得到满足条件的记录,随机取记录也很方便做到