To find duplicate entry in c++ using 2D Vector (std::vector) -
i wrote program find duplicate entry in table. beginner in c++
, hence don't know how program working efficient. there other idea write program? here have 3 tables (2d vector), 1)arecord_arr
2)maintable
, 3)idxtable
. idxtable
use identify keys check duplicate entry. arecord_arr
table add in maintable
. if exist in maintable
, show error "duplicate entry". check program, , give suggestions.
typedef vector<string> rec_t; typedef vector<rec_t> tab_t; typedef vector<int> cn_t; int main() { tab_t arecord_arr= { {"a","apple","fruit"}, {"b","banana","fruit"} }; tab_t maintable = { {"o","orange","fruit"}, {"p","pineapple","fruit"}, {"b","banana","fruit"}, {"m","melon","fruit"}, {"a","apple","fruit"}, {"g","guava","fruit"} }; tab_t idxtable = { {"code","k"}, {"name","k"}, {"category","n"}}; size_t num_arecords = arecord_arr.size(); int idxsize = idxtable.size(); int mainsize = maintable.size(); rec_t r1; rec_t r2; tab_t t1,t2; cn_t idx; for(int i=0;i<idxsize;i++) { if(idxtable[i][1]=="k") { idx.push_back(i); } } for(size_t j=0;j<num_arecords;j++) { for(unsigned int id=0;id<idx.size();id++) { r1.push_back(arecord_arr[j][idx[id]]); } t1.push_back(std::move(r1)); } for(int j=0;j<mainsize;j++) { for(unsigned int id=0;id<idx.size();id++) { r2.push_back(maintable[j][idx[id]]); } t2.push_back(std::move(r2)); } for(size_t i=0;i<t1.size();i++) { for(size_t j=0;j<t2.size();j++) { if(t1[i]==t2[j]) { cout<<"duplicate entry"<<endl; exit(0); } } } }
if want avoid duplicate entries in array, should consider using std::set
instead.
Comments
Post a Comment