https://github.com/huangmingchuan/my-stl
一个 STL 子集,C++ 11实现
https://github.com/huangmingchuan/my-stl
Last synced: 2 months ago
JSON representation
一个 STL 子集,C++ 11实现
- Host: GitHub
- URL: https://github.com/huangmingchuan/my-stl
- Owner: huangmingchuan
- Created: 2016-03-07T12:10:31.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2016-04-29T09:09:28.000Z (about 9 years ago)
- Last Synced: 2025-01-04T18:12:09.794Z (4 months ago)
- Language: C++
- Homepage:
- Size: 66.4 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# My-STL
简单的 STL,采用 C++ 11 实现。目的:在于掌握 STL 以及 C++模版编程。
编译环境:VS2013。
背景:
---------
其实在《C++ Primer》这本书中,用了大半本书的内容在教你怎样实现一个 vector,也提到了智能指针的实现。因此自己实现一个简单的 STL非常有必要,也能够加深对于基础知识的理解。举个小例子,我在 vector 的拷贝、移动构造函数和拷贝、移动赋值运算符中加了一条输出语句,因此当我运行下面的代码时:
```cpp
void test_case2()
{
std_vector temp1(10, 0);
my_vector temp2(10, 0);
std::cout << "-------------- 1 -------------" << std::endl;
auto v1(temp1);
auto v2(temp2);
assert(mystl::test::container_equal(v1, v2));
std::cout << "-------------- 2 -------------" << std::endl;
auto v3(std::move(temp1));
auto v4(std::move(temp2));
assert(mystl::test::container_equal(v3, v4));
std::cout << "-------------- 3 -------------" << std::endl;
std_vector v5;
my_vector v6;
v5 = v1;
v6 = v2;
assert(mystl::test::container_equal(v5, v6));
std::cout << "-------------- 4 -------------" << std::endl;
std_vector v7;
my_vector v8;
v7 = std::move(v3);
v8 = std::move(v4);
assert(mystl::test::container_equal(v7, v8));
std::cout << "------------------------------" << std::endl;
}
```结果会是这样:

那么什么是拷贝构造、什么是移动构造,什么是拷贝赋值、什么是移动赋值就自然而然理解了。
内容:
-------------
####目前已实现的有:* STL 基本组件
* 空间配置器
* reverse_iterator
* iterator_traits
* vector
* list
* string
* shared_ptr
* unique_ptr性能测试:
-------------
待续...