ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c++相关要点

2020-12-31 04:04:34  阅读:181  来源: 互联网

标签:end iterator int s1 c++ v1 v2 要点 相关


// #include <iosteam> using namespace std;
void test01() { vector<int> v; for (int i = 0; i < 10; i++) { v.push_back(i) cout << v.capacity() << endl; }   } //vector 的构造 void test02(){ vector <int>v; int arr[] = {1,2,3,4,}; vector<int> v1(arr,arr + sizeof(arr)/sizeof(int)) vector<int> v2(v1.bengin(),v1.end()); //赋值 vector<int> v3(10,100) vecor<int>v4; v4.assigin(v3.begin(),v3.end()) //交换 v2.swap(v2); //重新分配空间 v2.resize(10);//分配10个空间 v2.resize(10,-1);//分配的10个空间用-1来填充 v2.capacity();//容量 v2.size();//大小 /*插入和删除 insert(const_iterator pos, int count,ele)迭代器指向位置pos插入count个元素ele push_back(ele) 尾部插入元素ele pop_back() 删除最后一个元素 erase(const_iterator start, const_iterator end) 删除迭代器从start到end之间的元素 erase(const_iterator pos) 删除迭代器指向的元素 clear() 删除容器中所有的元素 */ //逆序遍历 for(vector<int>::reverse_iterator it = v.rbegin(); it != v.rend(); it++) { cout << *it << endl; }
/** * deque双端插入和删除操作 * push_back(elem) 在容器尾部添加数据 * push_front(elem) 在容器头部添加数据 * pop_back() pop_front() 删除容器最后/第一个数据 * deque数据存取 * at(idx) 返回索引idx 所指的数据,如果idx越界,抛出out_of_range * operator[] 返回索引idx所指的数据,如果idx越界,不抛出异常,直接报错 * front() back() 返回第一/最后一个数据 * deque插入操作 * insert(pos,elem) 在pos位置插入一个elem元素,返回新数据位置 * insert(pos,n,elem) 在pos位置插入n个elem数据,无返回值 * insert(pos,beg,end) 在pos位置插入[beg,end)区间的数据,无返回值 * clear() erase(beg,end) erase(pos) */   /*** * queue * queue<int>q * q.push(10) * q.pop * q.empty() * q.front() * q.back() * * ***/
}
bool myCompare(int v1,int v2){ return v1 > v2 } test03(){
/*** * list双向链表 * */ list<int> myList; for(int i = 0; i < 10; i++){ myList.push_back(i); } list<int>::_Nodeptr node = myList._Myhead->_Next; for (int i = 0; i < myList._mysize * 2; i++) { node = node->_Next; if (node == myList._Myhead) { node = node->_Next; }   } list<int>L; //所有不支持随机访问的迭代器 不可以用系统提供的算法 //如果不支持系统提供的算法,这个类内部会提供相应的方法 L.reverse(); L.sort(); L.sort(myCompare);
  }
class Person{ public: Person(string name, Int age){ this->m_name = name; this->m_age = age; } string m_name; int m_age; //重载 让remove可以删除自定义类型 bool operator == (const Person & p){ if (this->m_name == p.m_name && this->m_age == p.m_age) { return true; } return false;   } }
bool myComparePerson(Person &p1, Person &p2){ if (p1.m_age > p2.m_age) { return true; } return false;   } test04(){ list<Person> L; Person p1("" 10); L.push_back(p1) L.sort(myComparePerson) //remove需要自定义类重装==方法 L.remove(p1) }
test05(){ /** * find(key) * count(key) * lower_bound(keyElem)//返回第一个key>=keyElem元素的迭代器 * upper_bound(keyElem) 返回第一个key>keyElem元素的迭代器 * equal_range(keyElem) 返回容器中key与keyElem相等的上下限的两个迭代器 */ set<int> s1; s1.inset(5); s1.find(5) pair<set<int>::iterator,set<int>::iterator> ret = s1.equal_range(3) if (ret.first ! = s1.end()) { cout << "找到" << *(ret.first) << endl; }else{ cout << "为找到" << endl; }   if (re.second != s1.end) { cout<<"找到" <<*(re.second)<<endl; }   }
void test06(){ /*** * pair创建方式 * ***/ //1 pair<string,int> p(string("tom"),100) cout<<p.first<<p.second<<endl; //2. pair<string,int> p2 = make_pair("",200) }
//set容器 指定set排序规则(使用仿函数) class myCompareSet{ public: //重载 () bool operator()(int v1, int v2){ return v1 > v2; } } class myCompareSetPerson{ public: //重载 () bool operator()(Person &v1, Person &v2){ return v1.m_name > v2.m_name } }
//指定排序规则 class myComparemap{ public: bool operator()(int v1, int v2){ return v1 > v2; } } void test07(){ set<int, myCompareSet> s1; s1.insert(1); for (set<int,myCompareSet>::iterator it = s1.begin(); it!=s1.end(),it++) { cout<<*it<<endl; }
set<Person,myCompareSetPerson> s1; Person p1 = Person("name",100); s1.insert(p1) for (set<Person,myCompareSet>::iterator it = s1.begin();it != s1.end(),it++) { cout<<"name"<<(*it).name<<endl; }
map<int,int> m; m.insert(pair<int,int>(1,10)) m.insert(make_pair(2,20)) m.insert(map<int,int>::value_type(3,30)) m[4] = 40; for (set<int,int>::iterator it = m.begin();it != m.end(),it++) { cout<<"name"<< it->first<< it->second <<endl; }
pair<map<int,int>::iterator,map<int,int>::iterator> ret = m.equal_range(3) if (ret.first != m.end()) { cout<<"找到"<<ret.first->first<<ret.first->second<<endl; } if (ret.second != m.end()) { cout<<"找到"<<ret.second->first<<ret.second->second<<endl; } map<int,int>::iterator pos = m.find(0); int num = m.count(3); //0 或者1
//使用排序规则 map<int, int,myComparemap> mm; mm.insert(pair<int,int>(1,10)) mm.insert(make_pair(2,20)) mm.insert(map<int,int>::value_type(3,30)) mm[4] = 40; //multimap的key是可以重复的 }


class MyPrint{ public: void operator()(int num){ count++; } int coun = 0 } void MyPrint2(int num) { cout<<num<<endl; }
//一元 class GreaterThen20{ public: void operator()(int val){ return val > 20 } } //二元谓词 class mytwoComparetwo{ bool operator()(int v1,int v2){return v1 > v2;} } //谓词 void test08(){ vector<int> v; vector<int>::iterator pos = find_if(v.begin(),v.end(),GreaterThen20) cout<<*pos<<endl;   sort(v.begin(),v.end(),[](int val){cont<<val<<endl;}) } //内建函数 void test09(){ //#include<functional> negate<int>n; cont<<n(10)<<endl; plus<int> p; cont<<p(1,1)<<endl; vector<int> v; sort(v.begin(),v.end(),greater<int>()) sort(v.begin(),v.end(),less <int>()) }

标签:end,iterator,int,s1,c++,v1,v2,要点,相关
来源: https://www.cnblogs.com/sundayvc/p/14214336.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有