Linux后台服务器编程。
分类: C/C++
2014-07-27 21:07:56
1
2
3
|
vector
list
deque
|
函数模板 | 意义 |
C c(n); |
1
2
3
4
5
6
7
8
9
10
|
//初始化为一个容器的副本
vector
vector
//初始化为一段元素的副本
char*words[] = {"stately", "plump", "buck", "mulligan"};
size_twords_size = sizeof(words)/sizeof(char*);
list
//分配和初始化指定数目的元素
constlist
list
|
表达式 | 意义 |
*iter | |
iter->mem | |
表达式 | 意义 |
函数名 | 意义 |
c.begin() | |
c.end() | 返回一个迭代器,它指向容器 c 的最后一个元素的下一位置 |
c.rbegin() | 返回一个逆序迭代器,它指向容器 c 的最后一个元素 |
c.rend() | 返回一个逆序迭代器,它指向容器 c 的第一个元素前面的位置 |
函数名 | 意义 |
c.push_back(t) | |
c.push_front(t) | |
c.insert(p,t) | |
c.insert(p,n,t) | |
c.insert(p,b,e) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//在容器首部或者尾部添加数据
list
ilist.push_back(ix);//尾部添加
ilist.push_front(ix);//首部添加
//在容器中指定位置添加元素
list
list
while (cin >> word)
iter = lst.insert(iter, word); // 和push_front意义一样
//插入一段元素
list
string sarray[4] = {"quasi", "simba", "frollo", "scar"};
slist.insert(slist.end(), 10, "A");//尾部前添加十个元素都是A
list
slist.insert(slist_iter, sarray+2, sarray+4);//指针范围添加
|
函数名 | 意义 |
c.size() | |
c.max_size() | |
c.empty() | |
c.resize(n) | |
c.resize(n,t) |
1
2
3
4
|
list
ilist.resize(15); // 尾部添加五个元素,值都为0
ilist.resize(25, -1); // 再在尾部添加十个元素,元素为-1
ilist.resize(5); // 从尾部删除20个元素
|
函数名 | 意义 |
c.back() | |
c.front() | 返回容器 c 的第一个元素的引用。如果 c 为空,则该操作未定义 |
c[n] | |
c.at(n) |
1
2
3
4
5
6
|
int vector
for(int i=0;i<10;i++)vi.push_back(i);
cout<
cout<
cout<
cout<
|
函数名 | 意义 |
c.erase(p) | |
c.erase(b,e) | |
c.clear() | 删除容器c内的所有元素。返回void |
c.pop_back() | |
c.pop_front() |
1
2
3
4
5
6
7
8
9
10
|
//删除第一个或最后一个元素
list
for(int i=0;i<10;i++)list.push_back(i);
li.pop_front();//删除第一个元素
li.pop_back(); //删除最后一个元素
//删除容器内的一个元素
list
if(iter!= li.end())li.erase(iter);
//删除容器内所有元素
li.clear();
|
函数名 | |
c1 = c2 | |
c1.swap(c2) | |
c.assign(b,e) | |
c.assign(n,t) |
将容器c重新设置为存储n个值为t的元素 |
1
2
3
4
|
list
for(int i=0;i<10;i++)sl2.push_back("a");
sl1.assign(sl2.begin(),sl2.end());//用sl2的指针范围赋值,sl1中十个元素都为a
sl1.assign(10, "A"); //s1被重新赋值,拥有十个元素,都为A
|
1
2
3
|
vector
vector
vs1.swap(vs2);//执行后,vs1中5个元素,而vs2则存3个元素。
|
1
2
3
4
5
6
|
vector
cout << "ivec: size: " << ivec.size()
<< " capacity: " << ivec.capacity() << endl;//都为0
for (vector
cout << "ivec: size: " << ivec.size()
<< " capacity: " << ivec.capacity() << endl;//capacity大于size
|
1
2
|
//在之前一段代码的基础上
ivec.reserve(ivec.capacity()+50);//为ivec增加了50的预留空间
|
名称 | 意义 |
size_type | |
value_type | 元素类型 |
container_type | 基础容器的类型,适配器在此容器类型上实现 |
A a; | 创建一个新空适配器,命名为 a |
A a(c); | 创建一个名为 a 的新适配器,初始化为容器 c 的副本 |
关系操作符 |
1
2
3
4
|
vector
deque
stack
stack
|
函数名 | 意义 |
s.empty() | |
s.size() | 返回栈中元素的个数 |
s.pop() | 删除栈顶元素的值,但不返回其值 |
s.top() | 返回栈顶元素的值,但不删除该元素 |
s.push(item) | 在栈顶压入新元素 |
函数名 | 意义 |
q.empty() | |
q.size() | 返回队列中元素的个数 |
q.pop() | 删除队首元素,但不返回其值 |
q.front() | |
q.back() | |
q.top() | |
q.push(item) |
操作名 |
意义 |
p1 < p2 | |
p1 == p2 | |
p.first | 返回p中名为first的(公有)数据成员 |
p.second | 返回p的名为second的(公有)数据成员 |
1
|
pair
|
1
2
3
4
5
6
7
8
|
//pairs对象的操作
string firstBook;
if (author.first == "James" && author.second == "Joyce")firstBook = "Stephen Hero";
//生成新的pair对象
pair
next_auth = make_pair("A","B");//第一种方法
next_auth = pair
cin>>next_auth.first>>next_auth.second;//第三种方法
|
1
|
map
|
函数名 | 意义 |
类型 | 意义 |
在 map 容器中,键所关联的值的类型 | |
函数名 | 意义 |
m.insert(e) | |
1
2
|
word_count.insert(map
word_count.insert(make_pair("Anna", 1));
|
1
2
|
pair
word_count.insert(make_pair(word, 1));
|
函数名 | 意义 |
m.count(k) | |
m.find(k) | 如果m容器中存在按k索引的元素,则返回指向该元素的迭代器。如果不存在,则返回超出末端迭代器。 |
1
2
3
4
|
int occurs = 0;
if (word_count.count("foobar"))occurs = word_count["foobar"];
map
if (it != word_count.end())occurs = it->second;
|
函数名 | 意义 |
m.erase(k) | |
m.erase(p) | |
1
2
3
4
|
string removal_word = "a";
if (word_count.erase(removal_word))
cout << "ok: " << removal_word << " removed\n";
else cout << "oops: " << removal_word << " not found!\n";
|
1
2
3
4
5
6
7
8
|
vector
for (vector
ivec.push_back(i);
ivec.push_back(i);
}
set
cout << ivec.size() << endl; //20个
cout << iset.size() << endl; // 10个
|
1
2
3
4
|
set
set1.insert("the"); //第一种方法:直接添加
set
iset2.insert(ivec.begin(), ivec.end());//第二中方法:通过指针迭代器
|
1
2
3
4
5
6
|
set
for(int i = 0; i<10; i++)iset.insert(i);
iset.find(1) // 返回指向元素内容为1的指针
iset.find(11) // 返回指针iset.end()
iset.count(1) // 存在,返回1
iset.count(11) // 不存在,返回0
|
函数名 | 意义 |
m.lower_bound(k) | |
m.upper_bound(k) | 返回一个迭代器,指向键大于 k 的第一个元素 |
m.equal_range(k) |
|