STL - 容器共性机制研究

原创 2015年07月08日 21:59:13

C++模板是容器的概念。


理论提高:所有容器提供的都是值(value)语意,而非引用(reference)语意。容器执行插入元素的操作时,内部实施拷贝动作。所以STL容器内存储的元素必须能够被拷贝(必须提供拷贝构造函数)。

除了queue与stack外,每个容器都提供可返回迭代器的函数,运用返回的迭代器就可以访问元素。
通常STL不会丢出异常。要求使用者确保传入正确的参数。
每个容器都提供了一个默认构造函数跟一个默认拷贝构造函数。
如已有容器vecIntA。
vector<int> vecIntB(vecIntA); //调用拷贝构造函数,复制vecIntA到vecIntB中。
与大小相关的操作方法(c代表容器):
c.size(); //返回容器中元素的个数
c.empty(); //判断容器是否为空
比较操作(c1,c2代表容器):
c1 == c2 判断c1是否等于c2
c1 != c2 判断c1是否不等于c2
c1 = c2 把c2的所有元素指派给c1

demo

#include <iostream>
#include <cstdio>
#include <map>
#include <algorithm>
#include <vector>

using namespace std;

class Person
{
public:
	Person(char *_name, int _age) {
		name = new char[strlen(_name) + 1];
		strcpy(name, _name);
		age = _age;
	}

	~Person() {
		if (name != NULL) {
			delete[] name;
			name = NULL;
			age = 0;
		}
	}

	Person(const Person &obj) {
		name = new char[strlen(obj.name) + 1];
		strcpy(name, obj.name);
		age = obj.age;
	}

	Person &operator=(const Person &obj) {
		// 先把原先的内存释放掉
		if (name != NULL) {
			if (name != NULL) {
				delete[] name;
				name = NULL;
				age = 0;
			}
		}

		// 根据obj的大小分配内存
		name = new char[strlen(obj.name) + 1];
		strcpy(name, obj.name);
		age = obj.age;
		return *this;
	}

	void printPerson()
	{
		cout << "name: " << name << "\tage: " << age << endl;
	}

protected:
private:
	char *name;
	int age;
};

void containerMap()
{
	Person p1("lucifer", 23);
	p1.printPerson();

	vector<Person> v1;
	v1.push_back(p1);
	v1[0].printPerson();
}

int main()
{
	containerMap();

	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

STL - 容器共性机制研究

C++模板是容器的概念。 理论提高:所有容器提供的都是值(value)语意,而非引用(reference)语意。容器执行插入元素的操作时,内部实施拷贝动作。所以STL容器内存储的元素必须...

STL学习笔记-容器的共性机制

容器的共通的能力: (1) C++容器都是使用C++模板进行实现的。 (2) 理论提高:所有容器提供的都是值语意,而不是引用语意。容器执行插入元素的操作时,内部实现的是拷贝动作。 所以STL容器...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

深入研究 STL Deque 容器

转自: http://www.cnblogs.com/me115/archive/2010/10/15/1852432.html深入研究 STL Deque 容器本文档深入分析了std::deque,...

深入研究 STL Deque 容器

深入研究 STL Deque 容器 An In-Depth Study of the STL Deque Container (By Nitron) 翻译 masterlee   本文档深入分...

STL中序列式容器的共性

代码如下: /* * vector_1.cpp * * Created on: 2013年8月6日 * Author: Administrator */ #include ...

Binder机制研究

在安卓系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中。而不在同一个进程中的Activi...

VideoJS兼容性研究

VideoJS 5.8.6版兼容IE浏览器点击下载地址Video.js 是一个通用的在网页上嵌入视频播放器的 JS 库,Video.js 自动检测浏览器对 HTML5 的支持情况,如果不支持 HTML...

IOS SDK 兼容性 研究

如何设置 Base SDK 和 iOS Deployment Target ? 本文来自网络---禚来强 在iPhone 开发中,时常被版本所困扰, 苹果公司总会定期发布 iPho...

IOS SDK 兼容性 研究

摘要: 如何设置 Base SDK 和 iOS Deployment Target ?在iPhone 开发中,时常被版本所困扰, 苹果公司总会定期发布 iPhone 开发包,不是仅仅发布一个 pa...

17 容器深入研究

17 容器深入研究17.1 完整的容器分类法java SE5 新添加了 1. Queue接口,LinkedList已经为实现该接口做了修改,及其实现PriorityQueue和各种风格的Blocki...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)