当前位置:文档之家› C++容器介绍

C++容器介绍

C++容器介绍
C++容器介绍

Play every game as if it’s your last!

C++ 容器及选用总结

浅谈C++容器(一)

在面向对象的语言中,大多引入了容器的概念。那么什么是容器?实质上就是一组相同类型对象的集合,但是它又不仅仅像数组那样简单,它实现了比数组更复杂的数据结构,当然也实现了比数组更强大的功能。C++标准模板库里提供了10种通用的容器类,它基本上可以解决程序中遇到的大多数问题。

现在我主要来说明这10种通用容器的功能用途以及相互之间的相同与异同。但是在这里,我不提倡一开始就着手从这10种容器开始,因为这样恐怕在随后的理解上产生很多困难。在此之前了解一下数据结构的基本概念是很有必要的,因为容器的概念是基于数据结构的基本知识,实际上这些容器就是对数据结构提炼的产物,或者说每一个容器就是对某一种数据结构的实例化。容器是由数据结构而来,如果不了解数据结构就很难理解容器的本质。

数据结构的概念提出于上世纪80年代,它是随着程序语言结构化设计的诞生而兴起。数据结构主要包含两块内容:数据结构和算法。曾经在计算机界有这样一个公式:数据结构+算法=程序,这种思想对程序设计产生着深刻的影响,即使是现在依旧是计算机程序设计的基础,可见它的重要性。随着面向对象程序设计的发展数据结构也在进一步的发展和变化,它在未来也是程序设计不可或缺的基础之一。数据结构如此之重要,但是它的内容太过于复杂庞大,在这里就C++通用容器所用到的基础数据结构知识作以简单介绍。

计算机运行实质上就是在处理一些数据。这些数据对计算机来说不是杂乱无章的,而是有内在的联系,这种联系也许对人类思维来说不是一目了然的,但计算机能清楚的认识到。正是这种联系,大量的复杂的数据才能得到合理的组织和有效的处理。数据结构就是研究这些数据以及它们之间的联系,还有在这种联系下对数据的操作。

在数据结构里对数据的研究主要从三个方面着手:

●数据的逻辑结构

●数据的存储结构

●数据的操作

数据元素之间的相互联系方式称为数据的逻辑结构。数据的逻辑结构是对数据元素之间逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合上的若干关系来表示。数据的逻辑结构经常被简称为数据结构。

按照数据的逻辑结构来分,有两种形式:线性结构和非线性结构。线性结构是指除第一个和最后一个数据元素外,每个数据元素有且只有一个前驱元素和一个后继元素,而非线性数据结构则会有零个或多个前驱元素和零个或多个后继元素。

数据元素在计算机中的存储表示方式称为数据的存储结构,也称物理结构。任何需要计算机进行管理和处理的数据元素都必须首先按某种方式存储在计算机中,数据存储结构能正确地表示出数据元素间的逻辑关系。

按照数据的存储结构来分,有两种类型:顺序存储结构和链式存储结构。顺序存储结构是把数据元素存储在一块连续地址空间的内存中,其特点是逻辑上相邻的数据元素在物理上(即内存存储位置上)也相邻,数据间的逻辑关系表现在数据元素的存储位置关系上。链式存储结构的关键是使用节点,节点是由数据元素域与指针域组合的一个整体,指针将相互关联的节点衔接起来。其特点是逻辑上相邻的元素在物理上不一定相邻,数据间的逻辑关系表现在节点的衔接关系上。

数据的逻辑结构是从逻辑关系角度观察数据,它与数据的存储无关,是独立于计算机的。而数据的存储结构是逻辑结构在计算机内存中的实现,它是计算机处理的逻辑。

数据操作是指对一种数据类型的数据元素进行的某种处理。数据的操作是定义在数据的逻辑结构上的,每种逻辑结构都有一个操作的集合,不同的逻辑结构有不同的操作。操作的具体实现与存储结构有关。对于常用的数据结构的操作主要包括以下几种:访问元素、统计元素个数、更新元素、插入元素、删除元素、查找元素以及排序元素等。

目录

====================================================第一章容器

第二章 Vector和string

第三章关联容器

第四章迭代器

第五章算法

第六章函数

第七章在程序中使用STL

====================================================

第1章容器

第1条:慎重选择容器类型。

标准STL序列容器:vector、string、deque和list。

标准STL关联容器:set、multiset、map和multimap。

非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”string。

非标准的关联容器hash_set、hase_multiset、hash_map和hash_multimap。

vector 作为string的替代。(见第13条)

vector作为标准关联容器的替代。(见第23条)

几种标准的非STL容器,包括数组、bitset、valarray、stack、queue和priority_queue。

你是否关心容器中的元素是如何排序的?如果不关心,选择哈希容器.

容器中数据的布局是否需要和C兼容?如果需要兼容,就只能选择vector。(第16条)元素的查找速度是否是关键的考虑因素?如果是,就要考虑哈希容器、排序的vector 和标准关联容器-或许这就是优先顺序。

对插入和删除操作,你需要事务语义吗?如果是,只能选择list。因为在标准容器中,只有list对多个元素的插入操作提供了事务语义。

deque是唯一的、迭代器可能会变为无效(插入操作仅在容器末尾发生时,deque的迭代器可能会变为无效)而指向数据的指针和引用依然有效的标准STL容器。

第2条:不要试图编写独立于容器类型的代码。

如果你想编写对大多数的容器都适用的代码,你只能使用它们的功能的交集。不同的容器是不同的,它们有非常明显的优缺点。它们并不是被设计用来交换使用的。

第3条:确保容器中的对象拷贝正确而高效。

copy in,copy out,是STL的工作方式,它总的设计思想是为了避免不必要的拷贝。

第4条:调用empty而不是检查size()是否为0。

理由很简单:empty对所有的标准容器都是常数时间操作,而对一些list的实现,size 耗费线性时间。

第5条:区间成员函数优先于与之对应的单元素成员函数。

区间成员函数写起来更容易,更能清楚地表达你的意图,而且它们表现出了更高的效率。第6条:当心C++编译器最烦人的分析机制。

把形参加括号是合法的,把整个形参(包括数据类型和形参名)用括号括起来是非法的。

第7条:如果容器中包含通过new操作创建的指针,切记在容器对象析构前将指针delete。

STL很智能,但没有智能到知道是否该删除自己所包含的指针所指向的对象的程度。为了避免资源泄漏,你必须在容器被析构前手工删除其中的每个指针,或使用引用计数形式的智能指针(比如Boost的sharedprt)代替指针。

第8条:切勿创建包含auto_ptr的容器对象。

拷贝一个auto_ptr意味着改变它的值。例如对一个包含auto_ptr的vector调用sort 排序,结果是vector的几个元素被置为NULL而相应的元素被删除了。

第9条:慎重选择删除元素的方法。

要删除容器中指定值的所有对象:

如果容器是vector、string或deque,则使用erase-remove习惯用法。

SeqContainer c;

c.erase(remove(c.begin(),c.end(),1963),c.end());

如果容器是list,则使用list::remove。

如果容器是一个标准关联容器,则使用它的erase成员函数。

要删除容器中满足特定条件的所有对象:

如果容器是vector、string或deque,则使用erase-remove_if习惯用法。

如果容器是list,则使用list::remove_if。

如果容器是一个标准关联容器,则使用remove_copy_if和swap,或者写一个循环遍历容器的元素,记住当把迭代器传给erase时,要对它进行后缀递增。

AssocCOntainer c;

...

AssocContainer goodValues;

remove_copy_if(c.begin(), c.end(),

inserter(goodValues,goodValues.end()),badValue);

c.swap(goodValues);

for(AssocContainer::iterator i = c.begin();i !=c.end();/* do nothing */){ if(badValue(*i)) c.erase(i++);

else ++i;

}

要在循环内部做某些(除了删除对象之外的)操作:

如果容器是一个标准序列容器,则写一个循环来遍历容器中的元素,记住每次掉用erase时,要用它的返回值更新迭代器。

如果容器是一个标准关联容器,则写一个循环来遍历容器中的元素,记住每次把迭代器传给erase时,要对迭代器做后缀递增。

第12条:切勿对STL容器的线程安全性有不切实际的依赖。

对一个STL实现你最多只能期望:多个线程读是安全的;多个线程对不同的容器写入操作是安全的。

你不能期望STL库会把你从手工同步控制中解脱出来,且你不能依赖于任何线程支持。

第2章 vector和string

第13条:vector和string优先于动态分配的数组。

如果用new,意味着你要确保后面进行了delete。

如果你所使用的string是以引用计数来实现的,而你又运行在多线程环境中,并认为string的引用计数实现会影响效率,那么你至少有三种可行的选择,而且,没有一种选择是舍弃STL。首先,检查你的库实现,看看是否可以禁用引用计数,通常是通过改变某个预处理变量的值。其次,寻找或开发一个不使用引用计数的string实现。第三,考虑使用vector而不是string。vector的实现不允许使用引用计数,所以不会发生隐藏的多线程性能问题。

第14条:使用reserve来避免不必要的重新分配。

通常有两种方式来使用reserve以避免不必要的重新分配。第一种方式是,若能确切知道或大致预计容器中最终会有多少个元素,则此时可使用reserve。第二种方式是,先预留足够大的空间,然后,当把所有的数据都加入后,再去除多余的容量。

第15条:注意string实现的多样性。

如果你想有效的使用STL,那么你需要知道string实现的多样性,尤其是当你编写的代码必须要在不同的STL平台上运行而你又面临着严格的性能要求的时候。

第16条:了解如何把vector和string数据传给旧的API。

如果你有个vector v,而你需要得到一个只想v中的数据的指针,从而可把数据作为数组来对才,那么只需要使用&v[0]就可以了,也可以用&*v.begin(),但是不好理解。对于string s,随应的形式是s.c_str()。

如果想用来自C API的数据来初始化一个vector,那么你可以利用vector和数组的内存布局兼容性,先把数据写入到vector中,然后把数据拷贝到期望最终写入的STL容器中。

第17条:使用“swap技巧”除去多余的容量。

vector(contestants).swap(contestants);

表达式vector(contestants)创建一个临时的矢量,它是contestants 的拷贝:这是由 vector的拷贝构造函数来完成的。然而,vector的拷贝构造函数只为所拷贝的元素分配所需要的的内存,所以这个临时矢量没有多余的容量。然后我们把临时矢量中的数据和contestants中的数据作swap操作,在这之后,contestants具有了被去除之后的容量,即原先临时变量的容量,而临时变量的容量则变成了原先contestants臃肿的容量。到这时,临时矢量被析构,从而释放了先前为contestants所占据的内存。

同样的技巧对string也实用:

string s;

...

string(s).swap(s);

第3章关联容器

第19条:理解相等(equality)和等价(equivalence)的区别。

标准关联容器总是保持排列顺序的,所以每个容器必须有一个比较函数(默认为less)。等价的定义正是通过该比较函数而确定的。相等一定等价,等价不一定相等。

第20条:为包含指针的关联容器指定比较类型。

每当你创建包含指针的关联容器时,容器将会按照指针的值(就是内存地址)进行排序,绝大多数情况下,这不是你所希望的。

第21条:总是让比较函数在等值情况下返回false。

现在我给你演示一个很酷的现象。创建一个set,用less_equal作为它的比较类型,然后把10插入到该集合中:

set > s; //s 用"<=" 来排序

s.insert(10);

s.insert(10);

对于第二个insert,集合会检查下面的表达式是否为真:

!(10a <= 10b) && !(10b <= 10a); //检查10a和10b是否等价,结果为false

结果集合中有两个10!

从技术上讲,用于对关联容器排序的比较函数必须为他们所比较的对象定义个“严格的弱序化”(strict weak ordering)。

第22条:切勿直接修改set或multiset中的键。

如果你不关心可移植性,而你想改变set或multiset中元素的值,并且你的STL实现(有的STL实现中,比如set:: iterator 的operator*总是返回const T&,就不能修改了)允许你这么做,则请继续做下去。只是注意不要改变元素中的键部分,即元素中能够影响容器有序性的部分。

如果你重视可移植性,就要确保set和multiset中的元素不能被修改。至少不能未经过强制类型转换(转换到一个引用类型const_cast)就修改。

如果你想以一种总是可行而且安全的方式来许该set、multiset、map和multimap中的元素,则可以分5个简单步骤来进行:

1. 找到你想修改的容器的元素。如果你不能肯定最好的做法,第45条介绍了如何执行一次恰当的搜索来找到特定的元素。

2. 为将要被修改的元素做一份拷贝,。在map和multimap的情况下,请记住,不要把该拷贝的第一个部分声明为const。毕竟,你想要改变它。

3. 修改该拷贝,使它具有你期望的值。

4. 把该元素从容器中删除,通常是通过erase来进行的(见第9条)。

5. 把拷贝插到容器中去。如果按照容器的排列顺序,新元素的位置可能与被删除元素的位置相同或紧邻,则使用“提示”(hint)形式的insert,以便把插入的效率从对数时间提高到常数时间。把你从第1步得来的迭代器作为提示信息。

第23条:考虑用排序的vector替代关联容器。

标准关联容器通常被实现为平衡的二叉查找树。也就是说,它所适合的那些应用程序首先做一些插入操作,然后做查找,然后可能又插入一些元素,或许接着删掉一些,随后又做查找,等等。这一系列时间的主要特征是插入、删除和超找混在一起。总的来说,没办法预测出针对这颗树的下一个操作是什么。

很多应用程序使用其数据结构的方式并不这么混乱。他们使用其数据结构的过程可以明显地分为三个阶段,总结如下:

1. 设置阶段。创建一个新的数据结构,并插入大量元素。在这个阶段,几乎所有的操作都是插入和删除操作。很少或几乎没有查找操作。

2. 查找操作。查询该数据结构以找到特定的信息。在这个阶段,几乎所有的操作都是查找操作,很少或几乎没有插入和删除操作。

3. 重组阶段。改变该数据结构的内容,或许是删除所有的当前数据,再插入新的数据。在行为上,这个阶段与第1阶段类似。当这个阶段结束以后,应用程序又回到第2阶段。第24条:当效率至关重要时,请在map::operator[]与map::insert之间谨慎作出选择。

如果要更新一个已有的映射表元素,选择operator[];如果要添加一个新的元素,选择insert。

第25条:熟悉非标准的哈希容器。

标准C++库没有任何哈希容器,每个人认为这是一个遗憾,但是C++标准委员会认为,把它们加入到标准中所需的工作会拖延标准完成的时间。已经有决定要在标准的下一个版本中包含哈希容器。

第4章迭代器

第26条:iterator优先于const_iterator、reverse_iterator以及const_reverse_iterator。

减少混用不同类型的迭代器的机会,尽量用iterator代替const_iterator。从const 正确性的角度来看,仅仅为了避免一些可能存在的 STL实现缺陷而放弃使用const_iteraor 显得有欠公允。但考虑到在容器类的某些成员函数中指定使用iterator的现状,得

出 iterator较之const_iterator更为实用的结论也就不足为奇了。更何况,从实践的角度来看,并不总是值得卷入 const_iterator的麻烦中。

第27条:使用distance和advance将容器的const_iterator转换成iterator。

下面的代码试图把一个const_iterator强制转换为iterator:

typedef deque IntDeque; //类型定义,简化代码

typedef IntDeque::iterator Iter;

typedeef IntDeque:;const_iterator ConstIter;

ConstIter ci; //ci 是一个const_iterator

...

Iter i(ci); //编译错误!从const_iterator 到 iterator没有隐式转换途径

Iter i(const_cast(ci)); //仍然是编译错误!不能将const_iterator强制转换为iterator

包含显式类型转换的代码不能通过编译的原因在于,对于这些容器类型,iterator和

const_iterator是完全不同的类,他们之间的关系甚至比string和complex之间的关系还要远。

下面是这种方案的本质。

typedef deque IntDeque; //类型定义,简化代码

typedef IntDeque::iterator Iter;

typedeef IntDeque:;const_iterator ConstIter;

IntDeque d;

ConstIter ci; //ci 是一个const_iterator

... //使ci指向d

Iter i(d.begin());//使i指向d的起始位置

advance(i,distance(i,ci));//移动i,使它指向ci所指的位置

这中方法看上去非常简单和直接,也很令人吃惊。为了得到一个与const_iterator指向同一位置的iterator,首先创建一个新的 iterator,将它指向容器的起始位置,然后取得const_iterator距离容器起始位置的偏移量,并将iterator向前移动相同的偏移量即可。这项技术的效率取决于你所使用的迭代起,对于随机迭代器,它是常数时间的操作;对于双向迭代器,以及某些哈希容器,它是线性时间的操作。

第28条:正确理解由reverse_iterator的base()成员函数所产生的iterator的用法。

如果要在一个reverse_iterator ri指定的位置上插入元素,则只需在ri.base()位置处插入元素即可。对于插入操作而言,ri和ri.base()是等价的,ri.base()是真正与ri对应的iterator。如果要在一个reverse_iterator ri指定的位置上删除一个元素,则需要在ri.base()前一个位置上执行删除操作。对于删除操作而言,ri和ri.base()是不等价的。

我们还是有必要来看一看执行这样一个删除操作的实际代码,其中暗藏着惊奇之处:vector v;

... //同上,插入1到5

vector::reverse_iterator ri = find(v.rbegin(),v.rend(),3);//使ri指向3

v.erase(--ri.base()); //试图删除ri.base()前面的元素,对于vector,往往编译通不过

对于vector和string,这段代码也许能工作,但对于vector和string的许多实现,它无法通过编译。这是因为在这样的实现中, iterator(和vconst_iterator)是以内置指针的方式实现的,所以ri.base()的结果是一个指针。C和C++都规定了从函数返回的指针不应该被修改,所以所以编译不能通过。

既然不能对base()的结果做递减操作,那么只要先递增reverse_iterator,然后再调用base()函数即可!

...

v.erase((++ri).base()); //删除ri所指的元素,这下编译没问题了!

第29条:对于逐个字符的输入请考虑使用istreambuf_iterator。

假如你想把一个文本文件的内容拷贝到一个string对象中,以下的代码看上去是一种合理的解决方案:

ifstream inputFile("interestingData.txt");

inputFIle.unsetf(ios::skipws);//istream_iterator使用operator>>函数来完成实际的读操作,而默认情况下operator>>函数会跳过空白字符

string fileData((istream_iterator (inputFIle)),istream_iterator());

然而,你可能会发现整个拷贝过程远不及你希望的那般快。istream_iterator内部使用的operator>>实际上执行了格式化的输入,但如果你只是想从输入流中读出下一个字符的话,它就显得有点多余了。

有一种更为有效的途径,那就是使用STL中最为神秘的法宝之一:

istreambuf_iterator。 istreambuf_iterator对象使用方法与

istream_iterator大致相同,但是istreambuf_iterator直接从流的缓冲区读取下一个字符。(更为特殊的是, istreambuf_iterator对象从一个输入流istream s 中读取下一个字符的操作是通过s.rdbuf()->sgetc()来完成的。)

ifstream inputFile("interestingData.txt");

string fileData((istreambuf_iterator(inputFile)),istreambuf_iterator());这次我们用不着清楚输入流的skipws标志,因为istreambuf_iterator不会跳过任何字符。同样的,对于非格式化的逐个字符输出过程,你也应该考虑使用ostreambuf_iterator。

第5章算法

第30条:确保目标区间足够大。

当程序员希望向容器中添加新的对象,这里有一个例子:

int transmogrify(int x); //该函数根据x生成一个新的值

vector values;

vector results;

transform(values.begin(),values.end(),back_inserter(results),transmogrify);

back_inserter返回的迭代起将使得push_back被调用,所以back_inserter可适用于所有提供了push_back方法的容器。同理,front_inserter仅适用于那些提供了push_front成员函数的容器(如deque和list)。

当是使用reserver提高一个序列插入操作的效率的时候,切记reserve只是增加了容器的容量,而容器的大小并未改变。当一个算法需要向 vector或者string中加入新的元素,即使已经调用了reserve,你也必须使用插入型的迭代器。如下代码给出了一种错误的方式:vector values;

vector results;

...

results.reserve(results.size() + values.size());

transform(values.begin(), values.end(), results.end(), transmogrify);//变换的结果会写入到尚未初始化的内存,结果将是不确定的

在以上代码中transform欣然接受了在results尾部未初始化的内存中进行复制操作的任务。由于赋值操作重视在两个对象之间而不是在一个对象与一个未初始化的内存块之间进行,所以一般情况下,这段代码在运行时会失败。

假设希望transform覆盖results容器中已有的元素,那么就需要确保results中已有的元素至少和values中的元素一样多。否则,就必须使用resize来保证这一点。

vector values;

vector results;

...

if(results.size() < values.size()){

results.resize(values.size());

}

transform(values.begin(),values.end(),results.begin(),transmogrify);

或者,也可以先清空results,然后按通常的方式使用一个插入型迭代起:

...

results.clear();

results.reserve(values.size());

transform(values.begin(),values.end(),back_inserter(results),transmogrify);

第31条:了解各种与排序有关的选择。

sort(stable_sort)、partial_sort和nth_element算法都要求随即访问迭代器,所以这些算法只能被应用于 vector、string、deque和数组。partion(stable_partion)只要求双向迭代器就能完成工作。

对于标准关联容器中的元素进行排序并没有实际意义,因为它们总是使用比较函数来维护内部元素的有效性。

list是唯一需要排序却无法使用这些排序算法的容器,为此,list特别提供了sort成员函数(有趣的是,list::sort执行的是稳定排序)。如果希望希望一个list进行完全排序,可以用sort成员函数;但是,如果需要对list使用partial_sort或者nth_element算法的话,你就只能通过间接途径来完成了。一种间接做法是,将list中的元素拷贝到一个提供随即访问迭代器的容器中,然后对该容器执行你所期望的算法;另一种简介做法是,先创建一个list::iterator的容器,再对该容器执行相应的算法,然后通过其中的迭代器访问list的元素;第三中方法是利用一个包含迭代器的有序容器的信息,通过反复地调用splice成员函数,将 list中的元素调整到期望的目标位置。可以看到,你会有很多中选择。

第32条:如果确实需要删除元素,则需要在remove这一类算法之后调用erase。

1 2 3 99 5 99 7 8 9 99

调用remove(v.begin(),v.end(),99);后变成

1 2 3 5 7 8 9 8 9 99

remove无法从迭代器推知对应的容器类型,所以就无法调用容器的成员函数erase,因此就无法真正删除元素。其他两个算法remove_if和 unique也类似。不过list::remove和list::unique会真正删除元素(比用erase-remove和erase-unique 更为高效),这是STL 中一个不一致的地方。

第33条:对包含指针的容器使用remove这一类算法时要特别小心。

无论你如何处理那些存放动态分配的指针的容器,你总是可以这样来进行:或者调用remove类算法之前先手工删除指针并将它们置为空,或者通过引用计数的智能指针( 如boost::shared_ptr),或者你自己发明的其他某项技术。

下面的代码利用第一种方式:

void delAndNullifyUncertified(Widget*& pWidget)

{

if(!pWidget->isCertified())

{

delete pWidget;

pWidget = 0;

}

}

for_each(v.begin(),v.end(),delAndNullifyUndertified);

v.erase(vemove(v.begin(),v.end(),static_cast(0)),v.end());

下面的的代码使用第二中方式:

template //RSCP = "Reference Counting Smart Pointer"

class RCSP{...};

tpedef RCSP RCSPW;

vector v;

...

v.push_back(RCSPW(new Widget));

...

v.erase(remove_if(v.begin(),v.end(),not1(mem_fun(&Widget::isCertified))),v.end());第34条:了解哪些算法要求使用排序的区间作为参数。

下面的代码要求排序的区间:

binary_search lower_bound

upper_bound equal_range

set_union set_intersection

set_difference set_symmetric_difference

merge inplace_merge

includes

下面的算法并不一定需要排序的区间:

unique unique_copy

第35条:通过mismatch或lexicographical_compare实现简单的忽略大小写的字符串比较。

用mistatch实现:

//此函数判断两个字母是否相同,而忽略它们的大小写

int ciCharCompare(char c1, char c2)

{

int lc1 = tolower(static_cast(c1));

int lc2 = tolower(static_cast(c2));

if(lc1 < lc2) return -1;

if(lc1 > lc2) return 1;

return 0;

}

/* 此函数保证传递给ciStringCompareImpl的s1比s2短,如果s1和s2相同,返回0;如果s1比s2短,返回-1;如果s1比s2长,返回1。*/

int ciStringCompare(const string& s1, const string& s2)

{

if(s1.size() <= s2.size()) return ciStringCompareImpl(s1, s2);

else return – ciStringCompareImpl(s2, s1);

}

//如果s1和s2相同,返回0;如果s1比s2短,返回-1;如果s1和s2都是在非结尾处发生不匹配,有开始不匹配的那个字符决定。

int ciStringCompareImpl(const string &s1, const string &c2)

{

typedef pair PSCI;

PSCI p = mismatch(s1.begin(),s1.end(),s2.begin(),not2(ptr_fun(ciCharCompare) ));

if(p.first == s1.end()){

if(p.second == s2.end()) return 0;

else return -1;

}

return ciCharCompair(*p.first, *p.second);

}

用lexicographical_compare实现:

bool ciCharLess(char c1, char c2)

{

return tolower(static_cast(c1)) < tolower(static_cast(c2));

}

bool ciStringCompare(const string &s1,const string &s2)

{

return lexicographical_compare(s1.begin(), s1.end(), s2.begin(), s2.end(), ciCharLess );

}

第36条:理解copy_if算法的正确实现。

STL中没有copy_if的算法,下面是一个实现,但是不够完美:

template OutputIterator copy_if(INputIterator begin,INputIterator end,OutputIterator destB egin,Predicate p)

{

return remove_copy_if(begin,end,destBegin, not1(0));

压力容器钢板超声检测工艺守则

压力容器钢板超声检测工艺守则 1、主题内容适用范围 本规程规定了板厚为6~250mm的钢制压力容器用板材的超声检测和缺陷等级评定。 本规程适用于板厚为6~250mm的钢制压力容器用板材的超声检测。 2、检测人员 从事超声探伤的人员由UT--Ⅱ级或Ⅱ级以上资格人员担任。 3、表面状态 应消除妨碍探伤的钢板表面的氧化皮,铁锈及油污。 4、仪器和探头 4.1仪器采用A型脉冲反射式超声波探伤仪。 4.2探头选用应按NB/T47013-2015表3的规定进行。板厚6~20mm,采用双晶探头,频率4~5 MHZ;板厚>20~250mm,采用单直探头,频率2~5 MHZ。 5、耦合剂 应采用透声性好,且不损伤检测面的耦合剂,如机油、浆糊、甘油和水等。 6、试块 6.1用双晶直探头检测壁厚≤20mm的钢板时,采用NB/T47013.3-2015标准规定的图1所示的CBⅠ标准试块。用单直探头检测板厚>20mm 的钢板时,采用NB/T47013.3-2015标准规定的图2和表4试块。6.2试块用钢板,试块厚度应与被检钢板厚度相近。试块不得有Φ2

当量以上缺陷。 7、探伤面、探头移动区和探头移动速度 7.1探伤面为单侧单面检测。若认为需要或设计上有要求时,也可对钢板的上下面分别检测。 7.2探头移动区为沿垂直于钢板压延方向,间距100mm的平行线扫查。在钢板剖口予定线两侧各50mm(当板厚超过100mm时,以板厚的一半为准)内应作100%扫查。 7.3探头移动速度不得大于150mm/s. 8、检测灵敏度 8.1板厚≤20mm时,用NB/T47013.3-2015标准中图1所示的CBⅠ标准试块将工件等厚部位第一次底波高度调整到满刻度的50%,再提高10dB作为基准灵敏度。 8.2板厚>20mm时,用NB/T47013.3-2015标准中的CBⅡ试块平底孔第一次反射波高调整到满刻度的50%作为基准灵敏度。 8.3板厚不小于探头3倍近场区时,也可取钢板无缺陷完好部位的第一次底波来校准灵敏度。 9、缺陷记录 9.1在检测过程中,发现下列三种情况之一者即作缺陷: (1)缺陷第一次反射波(F1)满刻度的≥50%,即F1≥50%者; (2)当底面第一次反射波(B1)波高未达到满刻度,此时,缺陷第一次反射波(F1)波高与底面第一次反射波(B1)高之比≥50%,即:B1<100%而F1/ B1≥50%者;

关键岗位职责描述

DRAGON 龙头(集团)股份 关键岗位职责描述 2004年8月

本文档的作者有: 蕊高级顾问 钟蓓顾问 毕博管理咨询() 市西路1168号 泰富广场31层 : +86-21-5292 5392 传真: +86-21-5292 5391 本文包含的资料属于毕博管理咨询公司的商业,一旦泄漏,可能被商业竞争者利用。因此本文档容仅限于对毕博管理咨询公司作评估之用;除此之外,不得私自发布、使用和复制文档的任何容。 如果毕博管理咨询公司有幸和贵方签订合同,对本文档中数据的发布、使用和复制的权利将在以后签订的协议中明确说明。本限制条款不适用于可以从其它合法渠道得到对文中包含数据的使用授权的情况。 ? 2004 归毕博管理咨询公司所有。

目录 高管 董事长兼首席执行官 (7) 董事会秘书 (9) 总经理 (12) 分管副总一(采购/生产/研发) (14) 分管副总二(市场/销售/物流) (17) 分管副总三(国际贸易) (20) 分管副总四(其它业务) (23) 职能部门 部门:投资规划部 投资规划部总监 (26) -战略规划经理 (28) -投资管理经理 (30) -资产经营经理 (32) 部门:计划财务部 财务总监 (34) -计划与绩效经理 (37) -资金经理 (39) -会计税务经理 (41) -资产与产权经理 (44) -派出财务总监(相当于总部财务经理) (46) 部门:办公室 办公室主任 (49) -秘书 (51) -行政后勤经理 (53) -对外事务经理 (55) -法律经理 (57) 部门:人力资源部

-规划任用经理 (62) -培训发展经理 (64) -绩效薪酬经理 (67) 部门:信息技术部 信息技术部总监 (70) -规划管理经理 (73) -应用开发经理 (75) -系统维护经理 (77) 部门:审计监察部 审计监察总监 (79) -审计监察经理 (82) 业务部门 部门:市场部 市场部总监 (84) -品牌经理 (87) -营销中心主任 (90) 部门:研发部 研发部经理 (92) -设计室主任 (95) 部门:销售部 销售部总监 (97) -大区经理 (100) -区域经理 (103) -客户部经理 (105) -销售运营经理 (108) -销售计划主管 (111) -订单管理主管 (113) 部门:生产部

租户二次装修管理手册

附件 租户二次装修管理手册 1.二次装修管理流程图 2. 2.1 承建商的选择 租户应聘请信誉良好,具有二级资质以上的装修公司作为承建商,并向物业管理处提供

装修委托书。 2.2 承建商的指定 租户有权自行选择装修承建商,但为了保证大楼装修质量等级标准及设施设备系统的正常运转,对以下特殊工程,租户须聘请物业管理处指定的承建商且工程费用由租户承担。 ●消防喷淋、空调、给排水及相关设施的改建工程; ●机电总系统的各项接驳工程; ●天然气管道的接驳工程; ●其他涉及共用部位或共用设施设备的有关工程。 2.3 主体结构 装修设计不得对主体结构,包括墙、梁、柱等进行改动。 未获得物业管理处和/或业主方的书面批准,不得挖槽、切割、砍凿或雕刻柱、结构墙和相邻单元的共用隔墙、管道井的隔墙。 2.4 幕墙、吊顶、窗帘、地坪 装修设计不得对幕墙、吊顶、地坪随意更改。 不得在玻璃幕墙上钻孔或粘贴任何类型的设施和物件,一切装置不得触及到玻璃幕墙的结构组件或任何一部分。 窗帘的制作(基于格调、颜色和材质的一致性)由物业管理处指定统一基色。 因地坪底部埋设管线,未获得物业管理处和/或业主方的书面批准,不得挖槽、切割、砍凿地坪。 2.5 消防、空调系统 装修设计不得对消防、空调系统随意更改。租户若必须对单元内消防、空调系统进行更改的,应事先获得物业管理处和/或业主方的书面批准,对消防系统的更改还应获得消防局的批准。 2.6 单元门及招牌 单元门不得伸展至公共区域或共用部位,包括走廊或电梯厅,不得安装卷闸。 单元门口公司名称标识或店名标识的设置请咨询物业管理处,并按照物业管理处和/或业主方指导意见设计和设置。 2.7 间隔墙 单元内间隔墙应考虑消防喷淋和空调回风或其他透气设施的功能不受影响,间隔墙或摆放的高柜不能阻挡消防喷淋、空调室内机及风口的使用和检修。

煤矿井下安全避险“六大系统”的作用和配置方案示范文本

煤矿井下安全避险“六大系统”的作用和配置方案 示范文本 In The Actual Work Production Management, In Order To Ensure The Smooth Progress Of The Process, And Consider The Relationship Between Each Link, The Specific Requirements Of Each Link To Achieve Risk Control And Planning 某某管理中心 XX年XX月

煤矿井下安全避险“六大系统”的作用和配置方案示范文本 使用指引:此解决方案资料应用在实际工作生产管理中为了保障过程顺利推进,同时考虑各个环节之间的关系,每个环节实现的具体要求而进行的风险控制与规划,并将危害降低到最小,文档经过下载可进行自定义修改,请根据实际需求进行调整与使用。 摘要:研究了煤矿安全监控系统在瓦斯、火灾等重特 大事故监控与预警和事故调查中的作用,提出了系统设置 方案和基于煤矿安全监控系统的煤矿瓦斯爆炸等事故直接 原因认定方法;研究了煤矿井下人员位置监测系统在遏制 超定员生产、事故应急救援等方面的作用,提出了系统设 置方案;提出了以矿用调度通信系统和矿井广播通信系统 为基础,矿井移动通信系统为补充的矿井通信联络方案; 提出了严禁矿用IP电话通信系统和矿井移动通信系统替代 矿用调度通信系统的观点;提出了高瓦斯矿井的入井人员 宜携带隔离式自救器,隔离式自救器宜选用压缩氧隔离式 自救器;提出了避难硐室的装备要求和避难硐室性能价格

销售岗位职责描述

销售岗位职责描述 销售岗位职责描述 篇一: 销售员岗位职责描述销售员岗位职责描述在销售经理(主管)领导下,销售人员严格遵守销售管理规定和销售人员行为规范,积极认真开展销售接待和成交工作: 一、岗位职责: 1、按照项目规定的接听电话和接待来访次序,认真接听来电电话、热情接待来访客户,并做详细记录。 2、向来电、来访客户主动、热情介绍本项目概况,耐心了解客户需求,推荐户型。 3、珍惜每一位客源,详细分析客户情况,制定跟进策略,及时填制客户档案,作好跟进记录。 4、在成交过程中出现疑难问题及时向主管汇报,以便取得帮助。 5、积极与客户取得联系,促成客户复访、提高客户购房意向直至成交。 6、客户成交时及时通知开发商收款,不得以任何理由截留,认购、成交后务必将认购协议和合同在成交当日交给经理(主管)或秘书,不得以任何理由保留在销售员手中。 7、成交时须在第一时间报告经理及主管、秘书,确认该房号尚未售出后方可销售,不得在不知情的情况下销售,否则后果自负。 8、及时与经理(主管)沟通客户情况,认真分析成交或未成交的原因,不断提高销售业务水平。 9、积极主动协助成交客户办理认购、成交及其他购房手续。 10、与客户建立并保持良好的关系,将有关通知、项目最新信息、促销活动及时主动转达客户。 1

1、尊重开发商工作人员,与开发商的财务、工程、销售管理人员保持良好的关系,及时将有关信息传达给销售经理(主管)。 1 2、服从销售经理(主管)领导,服从项目分配。 1 3、与同事保持友好合作态度,如遇撞单应互相沟通情况,及时向经理 1 4、汇报并服从上级安排,不得以各种形式抢单。 1 5、积极参加公司组织的各类培训和项目培训。 1 6、严格遵守公司或项目所要求的工作时间。 1 7、积极主动做好并保持销售现场清洁卫生。 二、例行工作: 每日: 1、按时到岗: 早9: 00前台按时集合做到服装得体,工牌佩戴完毕。 2、晨会按时参加 3、客户接待正常: 包括来电来访、定期回访 4、B级卡填写完整(不在B级卡上体现的客户公司不予给短信群发) 5、晚总结会4: 45—5: 00按时召开,认真分析当日客户情况并做好回访计划。 6、在5: 10之前配合内业完成每日销售统计

40大全球知名品牌手表介绍

顶级品牌: 顶级品牌:
百达翡丽( : 百达翡丽 ( PATEK PHILIPPE) PHILIPPE )
Sky Moon Tourbillon Ref. 5002 是百 达翡丽制造的最复杂的腕表,也是品牌的第一只双面腕表。 机芯含有 686 个零件,其中部 分极其微小。百达翡丽(Patek Philippe)5002P 别称 Sky Moon Tourbillon 的 5002P 型号,是百 达翡丽自创立以来最复杂的腕表产品,亦被誉为现存最优秀的作品。机芯富有 686 块部件, 以此组成 12 项最重要的腕表复杂功能:包括陀飞轮、万年历、月历、闰年周期、星期、月 份、日期、飞返、三问、苍穹图、月相及月行轨迹。因其极具技术复杂性和巧夺天工的设计,

在 180 位百达翡丽大师级表匠当中, 只有一位能够制作这个型号。 这枚令人赞叹的杰作售价 高达 RMB176 万。
英文名简称 P.P.,曾被译为:帕泰克·菲利浦、柏达翡丽、百德 菲丽等。要充分领略百达翡丽腕表较您
百达翡丽
曾拥有的其他腕表的优胜之处,您必须让时光倒流,回到昔日。 拥有 160 年以上制表经验的百达翡丽腕表, 对于所有有品位的 藏家来说,都是永恒的追求,对于那些追求精良传统和高质量工 艺的鉴赏家来说,尤其如此。该品牌久负盛名的系列,都包括很 多独一无二的特性和功能,比如说恒动表、年历腕表、陀飞轮以 及积时表等等。 生产百达翡丽的工厂建于 1839 年。其每块表的平均零售价达 13,000 美元至 20,000 美元。他们是瑞士仅存的真正的独立制 表商之一,由头至尾都是自己生产,训练一名 PATEK PHILIPPE(百

六大系统建设情况简介

燕煤公司程庄煤矿“六大系统” 建设完成情况 程庄煤矿 2013年12月

燕煤公司程庄煤矿六大安全避险系统 建设完成情况 为促进和规范煤矿井下紧急避险系统的建设完善和管理工作,根据《国务院关于进一步加强企业安全生产工作的通知》(国发〔2010〕23号),《关于建设完善煤矿井下安全避险“六大系统”的通知》(安监总煤装【2010】146号)以及《推进全省煤矿建设完善井下安全避险“六大系统”工作规划及实施方案》(晋煤救字【2010】1644号)的要求,煤矿必须建设完善煤矿井下安全避险“六大系统”,监测监控、人员定位、紧急避险、通信联络、压风自救、供水施救安全避险“六大系统”,目前程庄矿六大系统均已建成并投入运行。具体情况如下: 1、监测监控系统 我矿现装备的瓦斯监控系统型号为重庆煤科院研发生产的KJ90NB监控系统。2007年10月底开始对全矿井监控进行升级改造,由原来的KJ38系统升级为KJ90NB系统,2009年11月12日前对矿井监控系统改造全部完成。 目前,地面中心站主控软件、网络终端软件、图形工作站及联网上传功能完善。程庄煤矿KJ90NB监控系统经过几年时间的调试及试运行,对系统性能特点及功能得以全面考核表明,系统性能稳定可靠,各项功能和技术指标达到原设计要求,与传统监控系统比较,在快速反应、系统容量、通讯稳定性、兼容及扩

展、软件功能等方面体现出宽带监控系统的强大优势,技术水平国内领先。 KJ90NB监控系统及设备具备合格有效的标志证书.能与市局联网。具备风电、瓦斯电和故障闭锁功能。实行24小时不间断值班。上岗人员经培训且取得相关证件。 2、人员定位系统 我矿现装备的人员定位系统重庆煤科院研发生产的型号为KJ251A煤矿人员监控系统。 KJ251A煤矿人员监控系统于2006年12月正式启用,系统具有图形显示功能,人员跟踪功能、员工考勤功能、中断取数功能、门禁功能、报警功能等。 KJ251A人员定位考勤管理系统平时进行日常的考勤,督促相关工作人员及时到位。井下发生异常情况时,可以知道人员的分布位置及数量,及时找到被困人员。发生事故后,可为事故调查提供参考依据。人员定位系统软件采用三层架构体系。数据采集与分析、存储、应用表示三部分既相对独立又是有机融合。 2010年由重庆煤科院对系统进行升级,由原来的KJ251升级为KJ251A人员定位系统。 3、通讯联络系统 燕煤公司通讯系统分为三大部分,分别是:有线通信系统、无线通信系统、矿用IP网络广播对讲系统。三个系统均已通过验收,目前运行正常。具体情况简介如下:

瑞士手表品牌欧米茄蝶飞型号简介

瑞士手表品牌欧米茄蝶飞型号简介 欧米茄手表 3,500美元 型号:钢质碟一飞同轴系列 机芯:自动上链机芯 功能:时、分、秒显示,3时位日历显示,附加的中央指针指示双时区 特色,受该手表品牌1夕50年闻名的经典款式启发,这款全新的碟飞系列配备了制表大师乔治·丹尼尔开发的同轴机芯,通过一红色指示器在内圈刻度上指示异地时间。黑色表盘,荧光指针和实用的琢面时符。防水深度达100米. 今年手表品牌欧米茄新推出的9300自制同轴擒纵计时机芯,除了将同轴擒纵再进化,增加了计时功能外,更在计时功能上做了特殊设计。一般的计时秒表款式会将积分盘、积时盘分开独立,而Omega 9300机芯则是将12小时积时盘与60分钟积分盘合而唯一设置在3点钟方向,增加阅读上的便利。搭载9300同轴擒纵计时机芯的不锈钢材质表款,45.5mm表径,分别有搭载黑色陶瓷表圈、橘色铝材质表圈两种选择。 OMEGAUSS3,500Model: De Ville Co-Axial, steelMovement: Self-windingFunctions: Hours, minutes, seconds, datewindow at 3 o'clock, dual time-zone byadditional centre handDetails: Inspired by the classical models forwhich the brand was known in the 1950s, thisnew De Ville model fitted with the Co-axialmovement developed by watchmaker GeorgeDaniels, shows the time in a second tinie-zone on an inner scale

2016年第二次JAVA复习题目

1、(2分) 关于以下程序段的说法,类包含不考虑情况下,正确的是() 1.classMyListener implements 2.ActionListener,ItemListener{ 3.public void actionPerformed(ActionEvent ae){ 4.System.out.println("Action");} 5.public voiditemStateChanged(ItemEventie){ 6.System.out.println("Item"); 7.} 8.} A、可通过编译 B、第5行产生编译错误 C、第2行产生编译错误 D、第3行产生编译错误 2、(2分)Swing与AWt的区别不包括() A、Swing是由纯Java实现的轻量级构件; B、Swing支持图形用户界面; C、Swing不依赖操作系统的支持; D、Swing没有本地代码; 3、(2分) 使用下面哪个组件可以接收用户的输入信息?() A、JLabel B、其他三项都不对 C、JTextField D、JButton 4、(2分)在Java图形用户界面编程中,若显示一些不需要修改的文本信息,一般是使用的组件是()。 A、JButton B、JTextArea C、JTextField D、JLabel

5、(2分) 监听事件和处理事件() A、由Listener和构件分别完成 B、都由Listener完成 C、由Listener和窗口分别完成 D、都由相应事件Listener处登记过的构件完成 6、(2分) 关于以下的组件的接口,正确的是() A、Choice组件可实现的接口是ActionListener B、List组件可实现的接口,除了ItemListener,还可以是ActionListener C、以上都不对 D、TextArea组件可实现的接口是ActionListener 7、(2分) 下列Java常见事件类中哪个是鼠标事件类?() A、InputEvent B、MouseEvent C、KeyEvent D、WindowEvent 8、(2分) 以下哪个是ServerSocket类中用于接收来自客户端请求的方法?() A、getOutputStream() B、get() C、receive() D、accept()

煤矿六大系统简介

提升系统简介:山西中强福山煤业有限公司开拓方式为斜井开拓,主斜井井口标高+894.6。斜长472m。倾角24°34′,三心拱断面,净宽 3.6m,净高2.65m,净断面积9.54m2 。担负矿井运输原煤提升任务,兼做进风井。辅助提升采用 JK-3.5×2.65型单绳缠绕式矿井提升机,煤炭提升采用STJ1000钢绳芯胶带机。副斜井井口标高+902.3m。斜长408m,倾角29°56,半圆拱断面,净宽4m,净高3.6m。担负全矿井进风及运送人员的任务。现开采煤层为9#+10#号煤层。设计能力为90万t/a。本矿井主井采用斜井开拓,矿井设计生产能力为90万t/a,工作制度为330d/a,提升时间16h/d,安装带式输送机,担负原煤的提升。 根据矿井生产能力、开拓方式、采区及工作面布置等条件,主斜井原煤提升采用钢绳芯深槽角强力胶带输送机。井底煤仓的原煤通过大型给煤机、经主斜井胶带输送机输送至主斜井井口房,再转载至地面生产系统。 运输系统简介:山西中强福山煤业有限公司井下现南回风大巷、中央→南北总皮带大巷→南翼第一联行皮带→南翼主运皮带→东巷主运输皮带。中央变电所、中央泵房、水仓→南翼第三联巷皮带→南北总轨道大巷一部皮带→南北总轨道大巷二部皮带→东巷主运输皮带。主运输皮带(DSJ100/63/2×160)经溜煤口,落到主斜井皮带,通过主斜井皮带输送到地面溜煤口,然后经两部转载皮带运往地面运输皮带到煤场。 1、施工期间主斜井皮带:型号:STJ-800/250S,带宽800mm,

带速2m/s。超出井口长度20米,超出井口部分坡度12.1度。总长度560米。 2、第一部转载皮带:带宽650mm,带速,1.3—1.6m/s 。长度176米,坡度约为2度. 本皮带尾装有给煤机,使本部皮带运输煤量均匀。 3、第二部转载皮带:带宽650mm,带速,1.3—1.6m/s 。长度65米,坡度约为3度。 通风系统简介: 主扇选用两台防爆对旋轴流风机FBCDZNO27/2×355,主扇风量为:82-165m3/s,n=740r/min, 配套电机功率Nf=2×355kW,一台工作,一台备用。设计掘进工作面均采用压入式独立通风,选用FBD —№5.6/15×2型局部通风机供风。 风流方向为:新鲜风流→副斜井(主斜井)→东轨道巷(东运输巷、东行人巷)→南北皮带大巷(南北轨道大巷)→工作面运输顺槽→回采工作面→工作面回风顺槽→集中回风巷→总回风巷→回风立 井→地面。矿井通风方式为中央分列式,通风方法为机械抽出式通风,主、副斜井进风,回风立井为专用回风井。 排水系统简介:该矿井涌水量为:30—50m3/天,分两级排水。一级排水:工作面涌水经各迎头潜水泵、多级泵(D46-50*6,75KW)用4寸管(DN100)直排到井底中央泵房。 二级排水:中央水泵房安装3台多级泵(D46-50*6,75KW),经4寸管排到地面静压水池。 采掘系统简介:设计采用单水平多煤层联合开拓,全井田共划分

生产部岗位职责描述

职位:生产部部长 岗位描述: 1、负责主持本部门的全面工作,组织并督促部门人员全面完成本部职责范 围内的各项工作任务。 2、贯彻落实本部岗位责任制和工作标准,密切与工程部、技术部、财务部、 仓储物流部等部门的工作联系,加强与有关部门的协作配合工作; 3、负责组织生产、设备、安全检查、环保、生产统计等管理制度的拟订、 修改、检查、监督、控制及实施执行; 4、负责组织编制年、季、月度生产作业、设备维修、安全环保计划。定期 组织召开公司月度生产计划排产会,及时组织实施、检查、协调、考核; 5、负责牵头召开公司每周一次调度会,确保产品合同的履行,力争公司生 产任务全面、超额完成; 6、配合技术工艺部门,参加技术管理标准、生产工艺流程、新产品开发方 案审定工作,及时安排、组织试生产,不断提高公司产品的市场竞争力; 7、负责抓安全生产、现场管理、劳动防护、环境保护专项工作; 8、负责做好生产统计核算基础管理工作。重视生产用原始记录、台账、报 表管理工作,及时编制上报年、季、月度生产、设备等有关统计报表; 9、负责做好生产设备、计量器具维护检修工作,合理安排设备检修时间; 10、负责生产现场物流体系的规划和改进; 11、强化调度管理。科学地平衡综合生产能力,合理安排生产作业时间, 平衡用电、节约能源、节约产品制造费用、降低生产成本; 12、负责组织生产调度员、统计员、计划员、设备管理员、安全员及车间 级管理人员的业务指导和培训工作,并对其工作定期检查、考核评比; 13、负责组织拟定本部门工作目标、工作计划、并及时组织实施、指导、 协调、检查、监督及控制; 14、及时完成上级主管交办的其他工作任务。

钟表大师眼中的世界十大名表品牌

钟表大师眼中的世界十大名表品牌 摘要: 10月8日钟表行业领袖,香港著名钟表收藏家、鉴赏家、评论家钟泳麟先生病逝香港,锺泳麟先生生前最伟大的莫过于定位了当年的十大名表这些排名即使到了今天也依然受用。 10月8日钟表行业领袖,香港著名钟表收藏家、鉴赏家、评论家钟泳麟先生病逝香港,他的仓促离世,给钟表业内也带来了不小影响,锺泳麟先生生前最伟大的莫过于定位了当年的十大名表这些排名即使到了今天也依然受用。今天小编详细整理了这些品牌的资料,以供参阅。 一、百达翡丽Patek Philippe 百达翡丽,是一家始于1839年的瑞士著名钟表品牌,其每块表的平均零售价达13000美元至20000美元。百达翡丽在钟表技术上一直处于领先地位,拥有多项专利,其手表均在原厂采用手工精致,坚持品质、美丽、可靠的优秀传统,百达翡丽以其强烈的精品意识、精湛的工艺、源源不断的创新缔造了举世推崇的钟表品牌。 创办于:1839年 年产量:20,000 经典系列:Calatrava Calatrava系列是以百达翡丽公司的标志美丽的Calatrava十字星(Calatrava Cross)而命名。第一支Calatrava出现在1932年。在过去的70余年中,百达翡丽的设计师们一直不断对该系列进行拓展,为其增添更加卓越的设计和功能。它至今仍是百达翡丽最受欢迎的系列,发展至今,已经创制了至少24个不同型号。

百达翡丽Calatrava系列5153J 市场参考价:¥ 289,800 机芯类型:自动机械 机芯型号:Caliber 324 S C 表壳:18k黄金 尺寸:38mm 精艺手表为您提供世界品牌手表https://www.doczj.com/doc/f117786251.html,

二次容器使用规则(1)

车间二次容器使用规则 第一章总则 第一条为了规范各车间二次容器使用安全管理,保障二次容器安全运行,制定本规则。 第二条本规则适用于正龙公司二次容器的防止泄漏安全使用管理。 第三条二次容器使用范围:所有油料、液体化学品都必须使用二次容器。按照物质相容性储存,互相抵触的物品严格分开储存。 第四条二次容器标准: 容积:独立容器的二次容器的容积设计应当大于基本容器容积的110%;多个容器的二次容器二溶剂应当不小于所有基本容器容积总和的10%。 容器结构:二次容器用料应当至少保证在两次检查间隔周期内可以正常工作。 第二章使用安全管理 第五条油料及化学品的分装必须在二次容器中进行,以避免泄露。 第六条车间必须每天二次容器进行检查,对于泄露的液体进行回收,如不能再次使用的必须存放在危险废弃物仓库定期处理;发现二次容器发生损坏的影响使用的,必须马上通知工程部进行维修或更换。 第七条工程部负责对公司各车间的二次容器进行日常管理的维护和监督,定期检查,作好记录。其主要职责如下: (一)贯彻执行有关法律、法规和安全技术规范;

(二)对于有问题的二次容器进行维修; (三)组织开展职工安全教育培训; (四)组织开展二次容器经常性安全检查和月度检查工作; 第八条二次容器的操作人员主要职责如下: (一)严格执行二次容器有关安全管理制度并且按照操作规程操作; (二)进行日常维护保养,对发现的异常情况及时处理并记录; (三)在操作过程中发现事故隐患或者其他不安全因素,应当立即采取紧急措施,及时向单位有关部门报告; (四)参加安全教育和技术培训。

各车间二次容器检查记录表 车间/日期 碱一(1) 碱一(2) 碱一(3) 碱一(4) 碱二(2) 碱二(3) 碱二(4) 碱二(5) 碳一(2) 碳一(3) 碳一(4) 碳二(3) 碳二(4/5) 五金车间 锌筒车间 检查项目:1,是否正确使用二次容器 2,二次容器是否完整 3,二次容器中的油料及化学品是否及时处理。

西普尼金表品牌简介

西普尼金表品牌简介 西普尼手表是尊尚(深圳)穿金戴银技术股份有限公司旗下集研发、设计、制作、销售于一体的核心腕表品牌,主要研发生产硬足金镶嵌腕表。作为行业内硬足金工艺的首创品牌,西普尼采用黄金作为腕表的主要材质,彰显“尊贵、精致、典雅”的品牌核心价值。 品牌简介: 西普尼品牌源于2006年,是尊尚表业旗下的核心腕表品牌。随着黄金首饰需求的饱和与黄金市场的低迷,足金镶嵌腕表从众多珠宝品类中脱颖而出,突破性地采用黄金作为腕表的主要材质,融汇了中西方珠宝与钟表的精髓,改变了传统首饰的文化。 发展历程: 作为专注于足金镶嵌腕表的企业,经过十年来的发展,用富有的开拓精神、激情抱负,奠定了西普尼的文化根基。经过长期地开拓与沉淀,拥有了多项结构、设计专利.生产出了唯意系列、雅致系列、轻羽系列、酒桶系列、星辰系列、优雅系列、锋尚系列、朗逸系列等多个系列,打造出了永恒经典的表款。其工艺与技术在同行业中的领先成为了西普尼缔造辉煌引领行业的动力。 西普尼腕表"尊贵、精致、典雅"的品牌核心价值,让黄金的尊贵与腕表的品

质相得益彰,备受消费者推崇。为了更好地表达主流消费群体的诉求,培育消费群体忠诚度,顺应现代人喜欢气质典雅化的时尚潮流,打造"尊贵黄金腕表"珠宝品类,结合品牌自身高端形象,演绎尊尚表业"高贵雅致、气华于心"的品牌故事,体现"尊贵、雅致"的品牌个性,塑造独特的品牌形象。每一只腕表都经过精心设计和雕琢,怀着最真挚的感动与耐心,坚守精良技术,并注以无穷的创意,用精致谱写历史的篇章,用时间塑造品牌的内蕴。 西普尼凭着热诚走在创造行业领导品牌的路上,我们仍需付出更多的努力,"以钟表文化融合珠宝理念,做强行业自主品牌"这是西普尼的理想,也是足金镶嵌腕表行业品牌崛起的共同梦想!

压力容器厚板设备制造工艺

厚板设备制造工艺规程 厚板设备:用厚板制造的设备,一般为中、高压设备。基本组成结构: 筒体、球形封头或锥体。 一.材料 1.壳体用钢板一般为正火状态供货,容器用钢板材料应符合GB713-2008的规定, 并逐张超声波检测;合格级别按材料相关标准的要求或图纸中的要求。 2.对于疲劳设备,材料还需满足JB4732要求,且满足分析设计标准中的各项要求; 3.壳体用基钢板一般需逐张进行拉伸和夏比(V型缺口)冲击试验。冲击温度和冲 击功值一般需符合图纸或协议的要求,但不得低于GB713-2008 的要求; 4.图纸或技术附件中有要求时,基板按GB/T5313的规定进行Z向(厚度方向)拉伸 试验; 5.复合板复层材料按图纸或协议规定进行晶间腐蚀等试验; 6.材料厚度需注意是成型前的厚度还是成型后的最薄壁厚; 筒体材料的排版起码孔不得开在焊缝上。组对时需注意开孔接管的焊接接头 与设备的主体纵、环焊接接头的距离需大于3倍的壳体厚度,不得小于100mm。 主要连接件(如:支座、支承环、轴耳等),次要连接件(如:内部支撑筋板 等)与压力容器相关焊接接头之间距离至少为50mm。 7.对复合板有晶间腐蚀要求的,其接管,内件需提交晶间腐蚀要求。 二.复合板制作工艺和交货状态 1. 制作工艺:复合板的复层金属应与基层金属结合牢固,其复合方法爆炸复合或爆炸+轧制复合。其复合级别需满足图纸或协议中的较高级; 2.交货状态:复合板交货状态应与基层板的状态一致,复合板需经热处理、校平、 切边后交货,复层表面应喷丸(砂)或酸洗处理;复合板热处理后不允许补焊。

三. 产品焊接试板 如果图纸或技术协议中没要求,产品焊接试板要求需按《容规》或相关的行业标准制作;产品试板所使用的材料和厚度应与所代表的工件相同并与代表的工件的材料为同一热处理炉号。 四. 复验用料 壳体复验用料应逐张提供试样。复验的力学性能取样一般垂直于轧制方向,特别是拉伸试验要求的长度一般在250~300mm之间,所以提供的复验用料一定要足够宽,并且要考虑双倍复验可能性,所以要足够长。复验料所使用的材料和厚度应与所代表的工件相同并与代表的工件的材料为同一热处理炉号。 五.法兰、接管锻件 1. 接管、法兰锻件首先需满足材料对应的标准; 2. 法兰、接管锻件,一般要求表面堆焊不锈钢或其他耐腐蚀层的,所以锻件需逐件进行超声波检测,合格级别按锻件标准或图纸和技术协议中提出的要求合格; 3. 对于要求表面堆焊接管、法兰组对的环焊缝在未要求RT的情况下,能够进行UT 的焊缝尽量做UT检查,这样就会减少堆焊后该环焊缝返修的可能性; 4. 待堆焊表面,首先需清理油脂、铁锈等影响焊接质量的缺点,然后在被堆焊表面进行磁粉检测确认无缺陷时,再进行表面堆焊: 1).根据焊艺要求先堆焊过渡层,堆焊要求厚度均匀,表面平整; 2).堆焊过渡层后,将表面修磨平整,对堆焊表面进行100%PT,按JB/T4730-2005 I级合格; 3).堆焊工件按焊接工艺热处理工艺整体热处理; 4).对堆焊表面清理干净,再对堆焊表面进行100%PT,按JB/T4730-2005 I级合格;

瑞士手表品牌介绍

1.特级表:以制作复杂功能表见长,打磨考究,充份显示表厂的技术实力,品牌含金量极 高,产量有限,价位多为十万元以上。 百达翡丽; 爱彼; 江诗丹顿; https://www.doczj.com/doc/f117786251.html,NGE&SOEHNE; 宝玑; ROGER DUBIUS豪爵; PARMIGIANI帕玛强尼; 宝珀(复杂款,普通款为一类一); 雅典(复杂款,普通款为一类一); FRANK MULLER法兰穆勒(复杂款,普通款为一类一); GLASHUETTE ORIGINAL格拉苏蒂(GUB39自动机芯及女表为一类一); 芝柏(复杂款,普通款为一类一)。 2.一类一等:适合中国高薪层身份的经典表。 劳力士; IWC万国; 积家; 卡地亚; 萧邦; 伯爵。 3.一类二等:适合中国高薪玩表人。 增你智(真利时); KELEK;昆仑; DANIEL ROTH; GERALD GENTA尊达;

UNION(德国); CHRONOSWISS瑞宝; PANERAI沛那海; 欧米茄; DUBEY&SCHALDENBRAND杜彼萧登; EBEL玉宝。 4.二类一等:用ETA的中坚力量,多偏于ETA高级芯,有一定改造与打磨工艺或设计着重突 出,占据中档偏高级领域,适合中国中产阶层有性格人士。 百年灵; 帝舵(借劳力士的光); TAG HEUER豪华(豪雅); PAUL PICOT;MARTIN BRAUN; 名仕; 艾美;PORSCHE DESIGN 保时捷(绮年华代工,设计取胜); IKEPOD(设计师表,多数天文台级); ALAIN SILBERSTEIN萧伯斯坦; EBERHARD(机芯改造功能强, CHRONO4令人惊艳); VULCAIN凡尔根(自家闹铃芯); BVLGARI宝格丽; HUBLOT; VENTURA(设计师表,多数天文台级)。 5.二类二等:用ETA中低级芯的中坚力量,改动不大,打磨一般,工具性强,价位五千至一 万五左右,适合中国百姓阶层消费。

安徽省蚌埠市2020届高三上学期第二次教学质量检查考试化学

安徽省蚌埠市2020届高三上学期第二次教学质量检查考试可能用到的相对原子质量:HI C 12 N 14 0 16 Na 23 Mg 24 Al 27 S 32 Cl 35.5 Fe 56 Ni 59 Cu 64 Zn 65 C0 59 一、选择题:本题共13小题,每小题6分,共78分。在每小题给出的四个选项中,只有一项是符合题目要求的。 7.化学在生活中发挥着重要的作用,下列说法错误的是() A.食用油脂饱和程度越大,熔点越高 B.纯铁易被腐蚀,可以在纯铁中混入碳元素制成“生铁”,以提高其抗腐蚀能力 C.蚕丝属于天然高分子材料 D.《本草纲目》中的“石碱”条目下写道:“采蒿蓼之属,晒干烧灰,以水淋汁,久则凝淀如石,浣衣发面,亦去垢发面。”这里的“石碱”是指K2CO3 8.设N A为阿伏加德罗常数的值,下列有关叙述正确的是() A.氯碱工业中完全电解含2 mol NaCl的溶液产生H2分子数为N A B.14 g分子式为C n H2n的烃中含有的碳碳双键数为N A/n C.2.0 g H218O与2.0 g D2O中所含的中子数均为N A D.常温下,将56 g铁片投入到足量的浓硫酸中生成SO2的分子数为1. 5N A 9.关于化合物2一呋喃甲醛()下列说法不正确的是() A.能使酸性高锰酸钾溶液褪色B.含有三种官能团 C.分子式为C5H4O2 D.所有原子一定不共平面 10.CuO有氧化性,能被NH3还原,为验证此结论,设计如下实验。 有关该实验的说法正确的是() A.反应时生成一种无污染的气体NO B.NH3与CuO反应后生成的红色物质可能是Cu C.装浓氨水的装置名称是分液漏斗,只能用作分液操作

矿井六大系统

矿井六大系统 一、监测监控系统1、要求达到的标准系统主机必须双机备份5分钟内启动。主机或显示终端必须设在调度室。 2、本工作面使用情况在距工作面≤5m无风筒侧安设瓦斯探头T110-15m 范围内安设瓦斯探头T2。在皮带机头处安设YW报警仪yw 报警仪。总控上安设DD仪。风筒传感器FT安设在距工作面5-10m范围内的风筒上。温度传感器、CO报警仪安设在距风口10-15m范围内。在风机负荷线上安设两台KT。 二、人员定位系统 1、要求达到的标准1实现井下坑道作业面工作人员的精确定位 2提供直观的巷道图 3矿井移动目标实时监视和屏幕显示 布情况以及个通信分站的状态;显示大巷内各人员编号及其当前所在的位置 4实现各部门工作人员考勤功能 为管理层对生产部门及个人的工作考核提供依据。 5实现井下定点考勤功能 6信息存储和历史数据回放 7突发情况报警功能 通过矿用本安型定位卡上的报警按钮进行报警。 8发出报警信息功能 9异常数据自动报警功能 10) 人机对话 11 122、本工作面使用情况本矿所有人员下井必须佩戴人员定位仪 随时掌握本工作面人员情况。 三、通信系统 1、要求达到的标准通信有效距离应不小于10km100m。容量量、信号装置或系统内终端设备并发数量由相关标准

规定。终端设备输出功率信号设备输 出功率无线设备工作频率 的工作频率由相关标准规定。备用电源工作时间 续工作时间不应小于2小时。 2、本工作面使用情况安设两部有线电话 便于皮带开停时互相联系。第二部安设在距工作面50m处 并每隔200m安设一组矿用隔爆式扩音器。 四、紧急避险矿井应根据井下作业人员和巷道断层等情况 择和布置避难硐室或移动式救生舱。所有矿井在各水平井底车场设置固定式避难硐室。有突出煤层的采区应设置采区避难室在防逆流 1000m范围内建设避难硐室或救生舱突出煤层的掘进巷道长度及采煤工作面走向长度超过500米时 工作面500米范围内建设避难硐室或设置救生舱。避难硐室的额定人数 5% 至少满足15人的避难需求。 避难硐室的设置应避开地址构造带、应力异常区以及透水威胁区 20m 井下避难硐室应具备安全防护、氧气供给、有害气体处理、温湿度控制、避难硐室内外环境参数检测、 额定避险人员生存96h以上。矿井避灾路线图应包括井下所有避难硐室设置情况。避难硐室 种类 全避险。 五、压风自救系统 1、 1压风自救系统的防护袋、送气管的材料应符合MT113的规定。 2GB2626的规定。 3压风自救装置应具有减压、节流、消噪音、过滤和开关等功能。 4 5 过5mm的现象。 6压风自救装置的操作应简单、快捷、可靠。

8财务岗位职责描述介绍

岗位职责描述介绍 岗位名称:出纳 直接上级:财务管理部经理 直接下级:无 岗位职责: 1、严格遵守并执行公司财务规章制度; 2、负责公司的现金存取以及现金划汇工作,并每日记录好现金日记账; 3、负责公司银行存款,支取的核算,以及银行电汇的收付跟踪记录,并锁定当日记录; 4、负责每旬结算现金,银行存款收支报表上交会计处,并结算可用金额上报上级领导; 5、负责保守本部门所掌握的公司秘密。 岗位权限: 1、对违反财务制度的行为有拒绝受理权和报告权; 2、对于本部门有意挪用公款,贪污行为者有检举权; 3、对须提供汇划资料的有对其资料的索要权。 批准审核制定陈跃玲

岗位名称:外汇核销员、出口退税办税员 直接上级:财务管理部经理 直接下级: 岗位职责: 1、负责申请外汇核销单,出口发票的领购工作; 2、银行的外汇结算、申报; 3、办理银行贷款,承兑汇票兑现的有关事项; 4、办理外汇核销事务及定期报表的申报。 5、办理出口退税的申报工作; 6、负责电子口岸,外汇核销的计算机操作, 7、负责外汇核销,出口退税资料的登记、跟踪、保管工作, 8、办理公司的变更的一切手续; 9、办理外经贸局、外汇局、银行、财政局、商检、工商、税务等部门涉及的各项工作。 岗位权限: 批准审核制定许俊波

岗位名称:记账员、办税员、税控机操作员 直接上级:财务管理部经理 直接下级: 岗位职责: 1、严格执行公司财务会计制度; 2、经会计主管审核公司费用原始凭证后登记费用明细账及总账; 3、购买、保管发票,登记发票登记本的进账、领用、结存栏目及开票情况按时到税务 机构进项发票认证及报税; 4、负责报送税务局自调函资料; 5、负责保守本部门所掌握的公司秘密; 6、完成上级交办的其它事务; 岗位权限: 1、对违反财务会计制度的行为有拒绝受理和报告权; 2、对违反增值税发票管理制度的拒绝受理权。 批准审核制定薛燕芬

法国Cartier卡地亚手表品牌介绍

卡西欧手表:https://www.doczj.com/doc/f117786251.html, 小型号 Tank Franqaise腕表备有黄金或白金表壳,并镶有两行璀璨夺目的钻石。 有着统一的风格和独特的设计,卡地亚名表简约且时尚,线条清晰却不僵硬,优雅而非繁复,总能让你一见钟情。 在旅游非洲时深被猎豹这种敏捷且迷人的动物所吸引,路易.卡地亚于 1940年为温莎公爵夫人设计了以钻石、搞玛瑶及绿宝石制成的豹形手镯。1938年,伊丽莎白女皇佩戴着卡地亚为其设计的最小的手镯式腕表出现在全世界面前,从此,卡地亚腕表在国际上声名远播。大型号Tank Francaise腕表镶有两行耀目生辉的钻石。中性、实用的设计适于各类佩戴者及不同的佩戴场合,让你感觉你总与时间同在,你就是时间的主宰。时至今日,每件卡地亚手表皆选用瑞士机件,不啻为创意与技术的完美结合。 卡地亚不仅是天才横溢的设时师,更具有精密心思,不断钻研技术,[魅魅幻时钟]即为珠宝镶嵌的惊世杰作,更将日渐式微的钟表制作工艺推向新里程。运用丰富的想像力,卡地亚珠宝大师将猎豹高雅优美的线条于Pantnere珠宝腕表系列上反映无遗。 1847年,Lluis-Francois Cartier承接师傅Adolphe Picard在巴黎的店铺,随即以创新的彩色宝石饰物噪皇庭,不但深获拿破仑三世称许,更誉满欧洲,声名远达俄罗斯、印度及南美;英皇爱德华七世曾任命他制作廿七顶皇冠作加冕之用,并誉之为[珠宝商的皇帝,帝皇的珠宝商];欧洲多国皇室亦向他发出委任状。 卡地亚——珠宝商的皇帝,皇帝的珠宝商。 拥有一百五十年历史的卡地亚,为瑰丽无匹、巧夺天工的珠宝钟表历史写下辉煌的篇章,卡地亚之名与其珠宝一样璀璨耀目,光芒不可逼视。是一枚手工精细、名贵的钻石腕表。自那时起豹形动物设计便成为卡地亚的吉祥物。 卡地亚Tank Franqaise腕表拥有醉人的钻石魁力。今日的卡地亚Tank Francaise 腕表,不断延续腕表的诱人魅力。这也是卡地亚的腕表得以成功的重要原因。Tank Franqalse腕表兼备古典的优雅及现代的豪迈气息,适合不同场合的需要。 。卡地亚 Tank Francaise象征神话中的英雄传奇,同时备有黄金及白金两款型号以供选择。

相关主题
文本预览
相关文档 最新文档