标签:ever 之间 tle ane .cpp 函数 插入 get char
迭代器作用 让容器和算法耦合, 或者说让数据和操作耦合
一、双向迭代器
List:元素有放入顺序,元素可重复;用链表实现
Map:元素按键值对存储,无放入顺序
Set:元素无放入顺序,元素不可重复;用平衡检索二叉树实现。
1.list构造函数
①list <int> c0; ②list <int> c1(3); 三个0 ③list <int> c2(5, 2);五个2 ④list <int> c4(c2); ⑤list <int> c5 = { 1,3,5 };list<int> c5({1,2});
⑥list <int>::iterator c_iter=c4.begin(),list <int> c6(c_iter1,c_iter2) ⑤int arr[5] = { 1,2,3,4,5 }; list<int> set1(arr, arr + 5);
assign重赋值(清除列表中的元素,并将一组新元素复制到目标列表):
①c1.assign(7,4) 七个四 ②c1.assign({1,3,5}); c1.insert(arr,arr+3); ③ c1.assign(c_iter1,c_iter2);
2.insert在链表c1某个位置c_iter插入(方法与assign类似) :
①c1.insert(c_iter,4); ②c1.insert(c_iter,7,4) ; ③c1.insert(c_iter,{5,6,7,8}); c1.insert(c_iter,arr,arr+3); ④c1.insert(c_iter,c_iter1,c_iter2);
push_front(type val)、push_back(type val)头尾插入,pop_front()、pop_back()头尾删除;
3.remove(type val) 删除列表中所有值为val的元素。unique()删除重复的相邻元素。
iterator erase(iterator first, iterator last); iterator erase(iterator where);共三种删除方式。
4.front()、back()返回头尾元素的引用 eg: c1.front()=56;
size_type size() const; bool empty() const; swap : c1.swap(c2); swap(c1,c2); ; clear()
5.排序sort 将两个有序链表归并merge
c1.sort(c2) c1.sort(c2,greater<int>) 对应c1.merge(c2) c1.merge(c2,greater<int>)它会把c2删除;
// list_class_list.cpp // compile with: /EHsc #include <list> #include <iostream> int main() { using namespace std; list <int> lis= { 1,3,5,7,9 }; /* */ lis.push_back(11); lis.push_front(18); cout << "after push_back and lis.push_front :"; for (auto x : lis) cout << " " << x; cout << endl ; lis.pop_back(); lis.pop_front(); cout << "after pop :"; for (auto x : lis) cout << " " << x; cout << endl; lis.front() = -2; lis.back() = 19; cout << "after lis.front=-2 and lis.back=19 :"; for (auto x : lis) cout << " " << x; cout << endl; list<int>::iterator iter = lis.begin(); lis.assign(++iter, lis.end()); cout << "after assign(++iter,lis.end()) *iter "<<*iter<<" :"; for (auto x : lis) cout << x << " "; cout << endl; lis.insert(iter, 56); cout << "after insert(iter,56) *iter "<<*iter<<" : "; for (auto x : lis) cout << x << " "; cout << endl; lis.insert(iter, iter, lis.end()); cout << "after insert(iter ,iter,lis.end()) : "; for (auto x : lis) cout << x << " "; cout << endl; lis.erase(iter, lis.end()); cout << "after erase(iter,lisend()) : "; for (auto x : lis) cout << x << " "; cout << endl; lis.reverse(); cout << "after lis.reverse() : "; for (list<int>::iterator it=lis.begin();it!=lis.end();it++) cout << *it << " "; cout << endl; lis.sort(); cout << "after lis.sort() : "; for (auto x : lis) cout << x << " "; cout << endl; lis.sort(greater<int>()); cout << "after lis.sort(greater<int>()) : "; for (auto x : lis) cout << x << " "; cout << endl; list<int> lis1= { 12,36,45,48 }; lis.sort(); lis1.sort(); lis.merge(lis1); cout << "after lis.merge(lis1) lis1.size() "<<lis1.size()<<" :"; for (auto x : lis) cout << x << " "; cout << endl; }
set函数一般处理三种 (type val)元素值 ({1,2,,})数组 (iter1,iter2)迭代器始终
1.set构造函数 因为元素唯一 就没有②③种情况;
insert(val) 因为内部自行有序,不必特在某处s_iter插入,且没有②
iterator find(val) 返回对应值的迭代器
erase(val); erase(iterator where); erase(iter1,iter2);
size() swap() empty() clear()
1.map声明赋值 #include<map> map<char,int>mp; mp[‘m‘]=12; mp[‘r‘]=20; 可覆盖
访问 for(map<char,int>::iterator it=mp.begin();it!=mp.end();it++) cout<<it->first<<it->second; it->first和it->second键与值
find(type key)返回键值key对应的迭代器
erase也有三种(key)、(it)、(first,last)
size() empty() swap() clear()
二、stack、queue
bool empty() const; size_type size() const;
void pop();删除栈顶元素 void push(const Type& val);入栈 type& top();返回栈顶元素的引用&。
queue与stack类似,仅把top改为front()和back()返回队列queue头、尾前部第一个元素的引用。
标签:ever 之间 tle ane .cpp 函数 插入 get char
原文地址:https://www.cnblogs.com/xuchuan/p/10322373.html