STL模板库

STL模板库

Vector

  • 初始化
vector<int > a(n + 1, 0);
vector<vector<int > > a(n, vector<int>(m, 0));
vector<vector<vector<int> > > dp(n, vector<vector<int> >(n, vector<int>(n, 0)));
  • 构建右值vector
vector<int >(n + 1, 0);
vector<vector<int > >(n + 1, vector<int > (n + 1, 0));
vector<vector<vector<int> > > (n, vector<vector<int> >(n, vector<int>(n, 0)));
  • 读入
for(auto &it : a) cin >> it;
for(int i = 1;i <= n;i++) cin >> a[i];

​ 已经重载了的operator

>  <  >=  <=  ==  =  != [] 
  • 常用成员方法
unique(iterator1, iterator2);//去重,返回去重后的尾迭代器
iterator erase( iterator loc );
iterator erase( iterator start, iterator end );
sort(iterator1, iterator2, less<int>() / greater<int>());
push_back(const TYPE &val);
emplace_back(const TYPE &val);
pop_back();
back();
front();
clear();
size();
swap();//交换两个vector
lower_bound(iterator1, iterator2, val); // return iterator;
upper_bound(iterator1, iterator2, val); // return iterator;
reverse(iterator1, iterator2);
max_element(iterator1, iterator2); // return iterator
min_element(iterator1, iterator2); // return iterator
accumulate(iterator1, iterator2, init) // return sum + init
void resize( size_type size, TYPE val );
  • 在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器
  • 在指定位置loc前插入num个值为val的元素
  • 在指定位置loc前插入区间[start, end)的所有元素
iterator insert( iterator loc, const TYPE &val );
void insert( iterator loc, size_type num, const TYPE &val );
void insert( iterator loc, input_iterator start, input_iterator end );

Stack

​ 常用成员方法

stack<int> s;

s.pop();
s.push();
s.top();
s.empty();
s.size();

String

​ 初始化

string s(str);
string s(n, '0');
string s(str)

​ 常用成员方法

string s;

s.size() / s.length();
s.insert(id(iterator), char);
s.erase(iterator);
s.find(const char);
s.sort();
s.substr();
s.reverse();
tolower() / toupper() : return char;
c_str(); return *char;
replace(begin, end, string2);

​ 关于返回值

string::npos;  //find()函数失配时的返回值

​ string与int之间的转化(#include)

int to_int(string s) {
	stringstream Stream;
	int ret;
	Stream << s;
	Stream >> ret;
	Stream.clear();
	return ret;
}
string to_String(int x) {
	stringstream Stream;
	string ret;
	Stream << x;
	Stream >> ret;
	Stream.clear();
	return ret;
}

Bitset

​ Operators

  • != 返回真如果两个bitset不相等。
  • == 返回真如果两个bitset相等。
  • &= 完成两个bitset间的与运算。
  • ^= 完成两个bitset间的异或运算。
  • |= 完成两个
  • ~ 反置bitset (和调用 flip()类似)
  • <<= 把bitset向左移动
  • >>= 把bitset向右移动
  • [] 返回第x个位的引用
&   ^   |   >>   <<   <<=   >>= 
!=  ==  &=  ^=  |=  ~  []

​ 初始化

bitset<n> bit(0); // 创建一个n位的bitset,初始化为0
bitset<n> bit(s); // s 可以为unsigned或string

​ 常用成员方法

any();     // 是否存在为1的二进制位
count();   // 二进制中1的个数
size();    // 二进制位的个数
set();     // 把所有位都制为1
reset();   // 把所有位都制位0
flip();    // 把所有位按位取反
to_ulong();// 返回unsigned long long 
Stream << bit;  // 把位集输入到Stream流中,建议输出string流

Deque

​ Operators

[]

​ 常用成员方法

deque<int> q;

q.back();
q.front();
q.pop_back();
q.pop_front();
q.push_back();
q.push_front();
q.empty();
q.clear();
q.size();
q.resize(size_type num, TYPE val);

sort();

Queue / Priority_queue

​ 常用成员方法

queue<int> q;

q.back();
q.front();
q.empty();
q.pop();
q.push();
q.size();

Map / Unordered_map/Multimap

Set / Unordered_set/Multiset

set<int> st;

st.lower_bound(x);
st.upper_bound(x);

Utility

  • pair
pair<Type, Type> p;

Algorithm

nth_element(a.begin(), a.begin() + k, a.end(), less/greater);

Iterator

上一篇:javascriptRemke之深入迭代


下一篇:关于 迭代器 的看法