C++プログラミング必須神器STL——容器編
STLはC++内蔵の標準テンプレートライブラリで、その中には多くの私たちがよく使うデータ構造とアルゴリズムが内蔵されています.日常のプログラミングとコンテストのプログラミングで合理的に使用できれば、私たちのプログラミング効率を大幅に向上させます.今日、ブロガーは私たちが最もよく使うSTLコンデンサとその内部に含まれる一般的な方法を簡単に紹介します.
stl容器共通操作
Vector特殊操作
SetsとMultisets
MapsとMultimaps
Pair
Stacks
Queues
Priority Queues
String
stl容器共通操作
ConstType c //
ConstType c1(c2) //
ConstType c(beg,end) // [beg,end] ,
c.size() //
c.empty() //
c.max_size() //
c1.swap(c2) // c1 c2
c.begin() // ,
c.end() // ,
c.rbegin() // ,
c.rend() // ,
c.insert(pos,elem) // elem pos ,
c.erase(beg,end) // [beg,end]
c.clean() // ,
ConstType<xxxxxx>::iterator pos// , (pos=c.find(3) pos->first ,pos->second )
Vector特殊操作
vector c // Elem vector
c.assign(n,elem) // n elem, c
c.assign(beg,end) // [beg,end] c
c.front() //
c.back() //
c.insert(pos,n,elem) // pos n elem
c.insert(pos,beg,end) // pos [beg,end]
c.push_back(elem) // elem
c.pop_back() //
SetsとMultisets
//set multiset , ( , )
//multiset set
set<Elem> c // set,
set<Elem,Op> c // set, Op
c.count(elem) // elem
c.find(elem) // elem , c.end()
c.lower_bound(elem) // elem , >=elem
c.upper_bound(elem) // elem , >elem
c.equal_range(elem) // elem , ==elem
MapsとMultimaps
//map multimap key/value pair , , key , key ,
//multimap map
map c // map,
map c // map, Op
c[key] // reference, key , ,
// set, count,find,lower_bound,upper_bound,equal_buond
Pair
pairvalue> c(key,value) // pair, c, key,value
c.first() //
c.second() //
// make_pair(key ,value) pair
// pair , , ,
Stacks
//LIFO( ) <stack>
stack st;
st.push() // stack
st.top() //
st.pop() // ,
st.size() //
st.empty() //
Queues
//FIFO( ) <queue>
queue Q;
Q.push() //
Q.front() //
Q.back() //
Q.pop() //
Q.empty() //
Q.size() //
Priority Queues
// Queue , ( )
priority_queue pQ;
pQ.push() // ,
pQ.top() //
pQ.pop() //
pQ.size() //
pQ.empty() //
String
string s(str) // str
string s(str,stridx) // str stridx s
string s(str,stridx,strlen) // str stridx strlen s
string s(beg,end) // [beg,end]
s.substr(stridx) // stridx
s.substr(beg,end) // [beg,end]
s.substr(strlen,find(value)) // char strlen
s.find() // value
s.rfind() // value ( )
s.find_first_of() // value
s.find_last_of() // value
s.find_first_not_of() // value
s.find_last_not_of() // value
s.begin() //
s.end() //
s.append(beg,end) // s
s.assign(beg,end) // s
s.insert(pos,c) // pos c,
s.insert(pos,num,c) // pos num c,
s.insert(pos,beg,end) // pos [beg,end]
s.erase(pos)/(beg,end) // pos /
s.replace(bag,end,str) // str
s.replace(beg,end,num,c) // num c
s.replace(beg,end,nbeg,nend) // [nbeg,nend] [beg,end]
s.empty() // s
s.length()/size() //