struct MyStruct
{
string va1;
};
vector<MyStruct> vecTest;
在進行vector插入的時候,在不回圈遍歷vecTest的前提下,如何做到如果插入的MyStruct里的va1存在相同的,就不插入該MyStruct
我記得是多載=,但忘記怎么寫了。。。
uj5u.com熱心網友回復:
費那事兒干嘛,直接用set不香嗎?uj5u.com熱心網友回復:
用stl的find,多載==,就可以了。
但底層一樣的是要遍歷的。
你可以用插入排序的方式插入。這樣插入的是一個順序表。就不用完全遍歷了。可以二分查找的演算法插入。
uj5u.com熱心網友回復:
存的是結構 set可以么?
uj5u.com熱心網友回復:
#include <iostream>
#include <string>
#include <set>
using namespace std;
struct MyStruct {
string va1;
};
struct MyStructCmp {
bool operator()(const MyStruct& a, const MyStruct& b) const {
return a.va1.compare(b.va1);
}
};
int main() {
set<MyStruct,MyStructCmp> setTest;
MyStruct m1;m1.va1=string("a");
auto r1=setTest.insert(m1);
if (r1.second) cout<<"inserted"<<endl; else cout<<"not inserted"<<endl;//inserted
MyStruct m2;m2.va1=string("b");
auto r2=setTest.insert(m2);
if (r2.second) cout<<"inserted"<<endl; else cout<<"not inserted"<<endl;//inserted
MyStruct m3;m3.va1=string("a");
auto r3=setTest.insert(m3);
if (r3.second) cout<<"inserted"<<endl; else cout<<"not inserted"<<endl;//not inserted
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/268502.html
標籤:C++ 語言
上一篇:VS2019打包之后發送給沒有這類軟體的電腦時,打開總是引數錯誤或者沒有運行環境,如何解決這一問題?
下一篇:MIPS問題
