- 论坛徽章:
- 0
|
c++ 的string有一个capacity方法,功能是返回当前分配给字符串的新内存块,而,reserve方法让你能够请求内存快的最小长度
c++ Primer Plus书上有个程序这样子的
- // str2.cpp -- capacity() and reserve()
- #include <iostream>
- #include <string>
- int main()
- {
- using namespace std;
- string empty;
- string small = "bit";
- string larger = "Elephants are a girl's best friend";
- cout << "Sizes:\n";
- cout << "\tempty: " << empty.size() << endl;
- cout << "\tsmall: " << small.size() << endl;
- cout << "\tlarger: " << larger.size() << endl;
- cout << "Capacities:\n";
- cout << "\tempty: " << empty.capacity() << endl;
- cout << "\tsmall: " << small.capacity() << endl;
- cout << "\tlarger: " << larger.capacity() << endl;
- empty.reserve(50);
- cout << "Capacity after empty.reserve(50): "
- << empty.capacity() << endl;
- return 0;
- }
- ~
复制代码
输出是:
Sizes:
empty: 0
small: 3
larger:34
Capacityes:
empty:15
small:15
larger:47
capacity after empty,reserve(50):63
而我的运行结果是
Sizes:
empty: 0
small: 3
larger: 34
Capacities:
empty: 0
small: 3
larger: 34
Capacity after empty.reserve(50): 50
问题1、两次结果不一样,是不是capacity和reserve的结果取决于编译器?
问题2、对于第二次的结果,size和capacity方法计算的结果是一样的,也不大理解。 |
|