3.1.C++11语言新特性

3.1.1微小但重要的语法提升

nullptr和std::nullptr_t :

nullptr取代0或NULL,表示一个pointer(指针)只想指向的no value。std::nullptr_t定义在<cstddef>中,为基础类型。

 

3.1.2以auto完成类型自动推导

以auto声明的变量,会自动根据其初始值自动推导出类型:(必须初始化)

如:auto i=42;

    double f();

    auto d=f();

可加额外限定符static:如:static auto vat=0.19;

 

3.1.3一致性初始化(Uniform Initialization)与初始列(Initializer List)

    一致性初始化:面对任何初始化动作,都可以使用大括号

如:int values[] {1,2,3}

    std::vector<int>v {2,3,4,6,9};

    初始列:强制value initialization,在local变量为某基础类型时,若没有明确的初始值,则会被初始化为0.

如:int j{};

注意:窄化(narrowing)精度降低或者造成数值变动,对大括号不成立

如:int x1(5.3);对

    Int x2=5.3;对

    Int x3{5,0};不对, narrowing

    Int x4={5.3}:不对,narrowing

因此,为了支持“用户自定义类型之初值列”(initializer lista for user_defined types)概念,C++11提供了class template std::initializer_list<>,支持以一系列值进行初始化,或在“想要处理一系列值”的任何位置初始化。

如:

    Void print (std::initializer_list<int>vals)

{

    For(auto p=vals.begin();p!=vals.end();++p){ //process a list of values

    std::cout<<*p<<”\n”;

}

}

print({12,3,5,6,3,767,54});//pass a list of values to print()

当“指明实参个数”和“指明一个初值列”的构造函数(ctor)同时存在,带有初值列的那个版本胜出。

如:class P

{

    Public:

        P(int ,int);

        P(std::initializer_list<int>);

};

P p(77,5);      //calls P::P(int,iint)

P q{77,5};      //calls P::P(initializer_list)

P r{77,5,42};     //calls P::P(initializer_list)

P s={77,5};   //calls P::P(initializer_list)

如果上述“带有一个初始值列”的构造函数不存在,那么结婚搜两个int的那个构造函数会被调用以初始化q和s,而r的初始化将无效。

explicit构造函数如果接受的是个初始列,会失去“初值列带有0个、1个或多个初值”的隐式转换能力。

 

3.1.4 Range-Based for 循环

C++11引入的一种崭新的for循环形式,可以逐一迭代某个给定的区间、数组、集合(range.array,or collection)内的每一个元素。其他语言可为foreach循环。

其一般性语法如下:

for(decl : coll){

    statement

}

打印某集合内所有元素“的泛型函数如下:

template <typename T>

void printElements(const T& coll)

{

    for(const auto& elem : coll){

        std::cout<<elem<<std::endl;

    }

}

注意:当元素在for循环中被初始化为decl,不得有任何显示类型转换(explicit type consversion)

 

3.1.5 Move语义和Rvalue Reference

C++11的一个重要特性:支持move semantic(搬迁语义),用以避免非必要拷贝(copy)和临时对象(temporary)。

Rvalue和Lvalue Reference的重载规则(overloading rule)如下:

1、实现void foo(X&);不实现void foo(X&&);其行为同C++98:foo()可因lvalue但不因rvalue被调用。

2、实现void foo(const X&);不·实现void foo(X&&);其行为同C++98:foo()可因lvaluervalue被调用。

3、实现void foo(X&);void foo(X&&);或void foo(const X&);void foo(X&&);则可以区分“为rvalue服务”和“为lvalue服务”。“为rvalue服务”的版本被允许且应该提供move语义。

4、实现void foo(X&&);不实现void foo(X&),也不实现void foo(const X&),这时,foo()可因rvalue被调用(只提供move语义),其在unique pointer、file stream或string stream使用。

总之,若classs未提供move语义,只提供惯常的copy构造函数和copy assignment操作符,rvalue reference 可调用它们。即,std::move()意味着“调用move语义(若提供),否则调用copy语义。

返回Rvalue Reference

不需要也不该move()返回值,对于下面代码:

    X foo()

    {

        X x;

        …

        return x;

    }

需保证:若X有可用的copy或move构造函数,则编译器可略去其中的copy版本;否则,若X有copy构造函数,X会被moved(搬移);若X有copy构造函数,X会被copied(复制);否则,报编译器错误(compile-time error).

 

3.1.6 新式的字符串字面常量(String Literal)

Raw String Literal

Raw string允许定义字符序列(character sequence),做法是确切写下其内容使其成为一个raw character sequence。

Raw string以R“(开头、以)”结尾,可内含line break.

如:“\\\\n”等价于R”(\\n)”,表示:两个反斜线和一个n。

若在raw string内写出,可使用定义符(delimiter),故raw string的完整语法为R”delim(..)delim”,delim是个字符序列(character sequence),最多16个基本字符,不能有反斜线(backslash)、空格(whitespace)和小括号(parenthesis)。

如:R”nc(a\

         b\nc()”

        )nc”;

等价于寻常的string literal :  “a\\\n       b\\nc()\”\n    

含义:string内含一个a、一个反斜线、一个新行字符(newline)、若干空格(space),一个b、一个反斜线、一个n、一个c、一对小括号、一个双引号、一个新行字符,以及若干空格。

Raw string literal 可用于定义正则表达式(regular expression)。

编码的(Encoded)String Literal

使用编码前缀i(encoding prefix),可为string literal定义一个特殊的字符编码(character encoding)

如:1.u8定义UTF-8编码,

2.u 定义一个literal,字符为char16_t类型

3.U定义一个literal,字符为char32t类型

    4.L定义一个wide string literal,字符为wchar_t的字符

 

3.1.7 关键字noexcept

C++11提供了关键字noexcept,用来指明某个函数无法或者不打算抛出异常。如:void foo () noexcept;

声明了foo()不打算抛出异常。若有异常未在foo()内被处理,程序会终止。

两种有用的抛出异常:操作可能抛出异常(任何异常),操作绝不会抛出任何异常。

指定在某种情况下函数不抛出异常:如,对于任意类型Type,全局性的swap()通常定义如下:

void swap(Type& x,Type& y)noexcept(noexcept(x.swap(y)))

{

x.swap(y);

}在noexcept(…)中可指定一个Boolean条件,若不符合就不抛出异常。

 

3.1.8 关键字constexpr

自C++11起,constexpr可用来让表达式核定于编译器。例如:

constexpr int square (int x)

{

      return x*x;

}

float a[square(9)];//OK since C++11:a has 81 elements

关键字修复了一个在C++988使用数值权限时出现的问题,如:std::numeric_limits<short>::max()在功能上等同于宏INT_MAX,无法用作整数常量,但在C++11中,这式子被声明为constexpr.

 

3.1.9 崭新的Template特性

自C++11起,template可拥有“得以接受个数不定之template实参”得参数,此能力称为variadic template。例如:

void print ()

{

}

template<typename T,typename… Types>

void print (const T& firstArg,const Types&… args)

{

    std::cout<<firstArg<<std:;endl;  //print first argument

    print(args…);                  //call print()for remaining arguments

}

若传入1个或者多个实参,上述的function template 就会被调用,通过递归调用,依此传入每一个实参,并打印。只有提供一个nontemplate重载函数print(),才能结束整个递归动作。

Alias Template(带别名的模板,或者叫Template Typedf)

自C++11起,支持template(partial)type definition>’然而由于关键字typename用于此处时总是出于某种原因而失败,因而要引入关键字using,并引入一个新术语alias template。如:

template <typename T>

using Vec=std::vector<T,MyAlloc<T>>;  //standard vector using own allocator

后,Vec<int>coll;就等价于std::vector<int,MyAlloc<int>>coll;

其他的新特性Template新特性

自C++11起,function template可拥有默认的template实参。此外,LOCAL type可被当作template实参。

 

3.1.10 Lambda

C++11引入lanbda,允许inline函数的定义式被用作一个参数,或是一个local对象。

Lambda的语法

Lambda是一发呢功能定义式,课被定义于语句(statement)或表达式(expression)内部。故可拿Lambda当作inline函数使用。

最小型的lambda函数没有参数吗,什么也不做,如:

[]{

  std::cout<<”hello lambda”<<std::endl;

}

可直接调用:

[]{

std::cout<<”hello lambda”<<std::endl;

}();      //prints”hello lambda”

或是把他传给对象,是其能被调用:

auto L=[]{

std::cout<<”hello lambda”<<std::endl;

};

L();     //prints”hello lambda”

Lambda由一个lambda introducer引入:是一组方括号,可在内指明一个capture,用来在lambda内访问“nonstatic外部对象”。

Lambda可以拥有参数,指明于小括号内,就像任何函数一样:

auto L=[](const std::string& s){

            std::cout<<s<<std<<endl;

        };

L(“hello lambda”);  //prints “hello lambda”

但是lambda不能是template,必须指明所有类型。lambda也可以返回某物,无需指明返回类型,会被自栋推导出来。

Capture(用来访问外部作用域)

在lambda introducer(每个lambda最开始的方括号)内,指明一个capture处理外部作用域内未被传递为实参的数据:

1.[=]表示外部作用域以by value方式传递给lambda,故次lambda被定义时,只能读取可读数据,不能改动。

2.[&]表示外部作用域以by reference 方式传递给lambda,故lambda被定义时,可对数据涂写,前提是拥有权限。

声明lambda为mutable,则可以获得passing by value和passing by reference混合体。

如:

int id=0;

auto f=[id]()mutable{

            std::cout<<”id:”<<id<<std:;endl;

            ++id;       //OK

        };

id=42;

f();

f();

f();

std::cout<<id<<std::endl;

会产生以下输出:

id:0

id:1

id:2

42

上述lambda的行为同以下function object:

class{

private:

    int id;   //coopy of outside id

public:

    void operator()(){

        std::cout<<”id”<<id<<std::endl;

        ++id;     //OK

    }

};

Lambda的类型

Lambda的类型,是不具名function object(或称function)。可使用template或auto给该类型声明对象,可使用decltype()写下该类型。也可使用C++标准库提供的std::function<>class template,指明一个一般化类型给function programming使用,class template提供了“明确指出函数的返回类型为lambda”的唯一办法:

//lang/lambda1.cpp

#include<functional>

#include<iostream>

 

std:;function<int(int,int)>returnLambda()

{

    return [](int x,int y){

                return x*y;

            };

}

int main()

{

    auto lf=returnLambda();

    std::cout<<lf(6,7)<<std::endl;

}

 

输出:42

 

3.1.11 关键字decltype

新关键字decltype可让编译器找出表达式(express)类型,这是typeof得特性体现。C++11引入这个关键字是为了弥补原有的typeof缺乏的一致性和不完全。如:

std::map<std::string,float>coll;

decltype(coll)::value_type elem;

decltype的应用之一是应用声明返回类型,另一用途是在metaprogramming(超编程)或用来传递一个lambda类型。

 

3.1.12 新的函数声明语法(New Function Declaration Syntax)

在C++11中,可以将一个函数的返回类型转而声明于参数列之后:

template<typename T1,typename T2>

auto add(T1 x,T2 y)->decltype(x+y);

此语法同“为lambda声明返回类型”是一样的。

 

3.1.13 带领域的(Scoped)Enumeration

C++11允许定义scope enumeration—又称为strong enumeration 或enumeration class。如:

enum class Salutation:char{mr,ms,co,none};

重点在于,在enum之后指明关键字class.

优点如下:

1.不隐式转换至/自int;

2.若数值(如mr)不在enumeration被声明的作用域内,则必须改为Salutation::mr;

3.可明显定义地层类型(underlying type,本例是char),获得保证大小(若略去这里的“:char”,默认类型是int);

4.可提前声明(forward declaration)enumeration type,消除“为了新的enmerations value而重新变异“的必要—如果只有类型被使用的话。

注意:type trait std::underlying_type,可核定(evaluate)一个enumeration type的低层类型。标准异常的差错值(error condition value)也是个scoped enumerator.

 

3.1.12 新的基础类型(New Fundamental Data Type)

以下新的基本数据类型,定义于C++:

1.char16_t和char32_t

2.long long 和unsigned long long

3.std::nullptr_t

 

3.2 虽旧尤新的语言特性

Nontype Template Parameter(非类型模板参数)

对于标准的class bitset<>,可传递bit个数作为template实参,如下:

bitset<32>flags32;    //bitset with 32 bits

Default Template Parameter(模板参数默认值)

Class template可拥有默认实参。如下声明式允许我们在声明class MyClass对象时指定1或2个template实参:

template<typename T,typename container=vector<T>>

class MyClass;

若只传入一个实参,第二个实参会采用默认值:

MyClass<int>x1;     //equivalent to:MyClass<int,vector<int>>

注意,默认的template实参可以其前一个实参为依据为定义。

关键字typename

关键字typename用来指明紧跟其后的是个类型。如,

template<typename T>

class MyClass{

    typename T::SubType*ptr;

    …

};

这里的typename用来阐明“SubTypehi是个类型,定义于class T内”。因此ptr是个pointer,指向类型T::SubType。若没有typename,SubType会被视为一个static。

基于“SubType必须是个类型”这样的限定,任何被用来替换T的类型,都必须提供一个内层类型SubType.内层类型可以是个抽象数据类型(abstract data ttype)。template内的任何标识符都被视为一个value,除非为它加上typename,在template声明式中typename也可被用来取代class:template<typenmae T>class MyClass;

Member Template(成员模板)

Class的成员函数可以是template,但member template不可以是virtual。如:

class MyClass{

    …

    template<typename T>

    void f(T);

};

上述的MyClass::f声明了“一组”成员函数,其参数可以是任意类型。可传递任何实参给它们。只要该实参的类型提供“f()用到的所有操作”.

Member template的一个特殊形式是所谓template构造函数,通常被提供用于“对象被复制时给与隐式转换”的能力。template构造函数并不压制copy构造函数的隐私声明。若类型完全吻合,则隐式的copy构造函数会被生成出来。

Nested(嵌套式)Class Template

嵌套式(Nested class)也可以是template;

template<typename T>

class MyClass{

    ..

    template<typename T2>

    class NestedClass;

    …

};

 

3.2.1 基础类型的明确初始化(Explicit Initialization for Fun)

使用“一个明确的构造函数调用,但不给实参“的语法,基础类型会被设定初值为0。如果一个template强迫设置为0,其值就是所谓的zero initialized,否则就是default initialized。

 

3.2.2 main()定义式

main()只有两种定义式具备可移植性:

int main()

{

    …

}

和int main(int argc,char* argv[])

{

    …

}

其中的argv,也就是命令行实参(command-line argument)所形成的array,也可定义为char**。返回类型必须是int 。若不想以“main()返回“方式结束C++程序,通常应该调用exit()、quick_exit()(C++11之后)或terminate()。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
电子书大小: 15.00MB 电子书语言: 简体中文 本书是程序设计大师Herbert Schildt多年开发、教学经验的总结,以实践证明行之有效的方法让您快速精通C++语言。 本书以最易于教学的编排和大量附有细致注解的典型程序示例,从基础知识到最新的高级特性,全面讲解了C++语言。通过本书,读者可以了解C++C++程序的一般形式,并逐步掌握C++语言的核心内容,包括控制语句、运算符、变量、类和对象、异常处理、模板、名称空间、运行时类型ID和标准模板库等,还能学习到用于.NET编程的扩展关键字。全书内容秉承Herbert一贯的写作风格:简洁、清晰、精准。 本书为C++编程入门读物,面向没有编程经验的程序设计及C++语言的初学者,适合作为高等院校计算机专业相关课程教材,也可为广大编程爱好者深入学习C++及其他面向对象语言打下坚实的基础。 第1章 C++的发展历程 1.1 C++的起源 1.2 C++的发展 1.3 什么是面向对象程序设计第2章 C++概览 2.1 第一个C++程序 2.2 处理语法错误 2.3 第二个C++程序 2.4 一个更实际的例子 2.5 一种新的数据类型 2.6 快速回顾 2.7 函数 2.8 函数的参数 2.9 输出选项 2.10 两个简单的命令 2.11 代码块 2.12 分号与定位 2.13 缩进编排 2.14 C++中的关键字 2.15 C++的标识符 2.16 标准C++库 第3章 基本数据类型 3.1 变量的声明 3.2 类型修饰符 3.3 字面量 3.4 变量的初始化 3.5 运算符 3.6 表达式第4章 程序控制语句 4.1 if语句 4.2 for循环 4.3 switch语句 4.4 while循环 4.5 do-while循环 4.6 使用continue 4.7 用break跳出循环 4.8 嵌套循环 4.9 使用goto语句 4.10 综合应用 第5章 数组和字符串 5.1 一维数组 5.2 字符串 5.3 字符串库函数 5.4 二维数组 5.5 多维数组 5.6 数组初始化 5.7 字符串数组 第6章 指针 6.1 什么是指针 6.2 指针运算符 6.3 指针表达式 6.4 指针和数组 6.5 指针与字符串字面量 6.6 指针比较的示例 6.7 指针数组 6.8 空指针约定 6.9 多重间接 6.10 指针带来的问题第7章 函数,第一部分;基础知识 7.1 函数的作用域准则 7.2 传递指针和数组 7.3 argc和argv:函数main()的参数 7.4 return语句 7.5 函数原型 7.6 头文件:进一步的学习 7.7 递归 第8章 函数,第二部分:引用,重载和默认参数 8.1 两种参数传递的方法 8.2 引用参数 8.3 函数的重载 8.4 函数的默认函数 8.5 函数重载与歧义性 第9章 更多的数据类型与运算符 第10章 结构与联合 第11章 类 第12章 类的深入学习 第13章 运算符的重载 第14章 继承 第15章 虚函数与多态 第16章 模板 第17章 异常处理 第18章 C++的I/O系统 第19章 运行时类型识别与强制转换运算符 第20章 名字空间和其他高级主题 第21章 标准模板库 第22章 C++预处理器 附录A 基于C的I/O 附录B 使用旧的C++编译器 附录C .NET对C++的受控扩展
英特尔® C++编译器Cilk语言扩展 ............................................................................................... 1 1. 介绍............................................................................................................................................ 7 1.1 目标读者 ............................................................................................................................... 7 1.2 前提条件 ............................................................................................................................... 7 1.3 排字约定 ............................................................................................................................... 7 1.4 附加资源和信息 ................................................................................................................... 7 2. 新手上路 .................................................................................................................................... 8 2.1 编译运行一个Cilk用例 ..................................................................................................... 8 2.1.1 编译生成 qsort ........................................................................................................... 8 2.1.2 执行 qsort ................................................................................................................... 9 2.1.3 观察多核系统中的加速 ............................................................................................... 9 2.2 改写一个C++程序 .............................................................................................................. 10 2.2.1 从一个串行程序开始 ................................................................................................. 11 2.2.2 使用_Cilk_spawn加入并行性 .................................................................................. 12 2.2.3 编译,执行和测试 ..................................................................................................... 14 3. 编译、运行和调试Cilk程序 ......................................................
傲游3浏览器是国内唯一具有独立内核的桌面浏览器产品,首创双核浏览模式,在安全、快速的基础上,保证了对网银、网购类网站的兼容性。傲游3浏览器内置云端广告过滤系统,强大而易用,确保用户在浏览网页时不受任何广告的骚扰。 傲游3浏览器界面简洁美观,布局合理。傲游3功能丰富,拥有在线收藏、鼠标手势、广告过滤、智能地址栏、多重搜索、页面截图、即时翻译等数十种实用功能,并且独有"快应用"、"团购指数"等创新性功能,充分让用户体验到基于新式浏览器的一站式互联网服务的魅力。 北京傲游(Maxthon)天下科技有限公司是一家国际化科研企业,在硅谷、香港等地设立有分公司。傲游旨在通过浏览器向用户提供全面的一站式互联网服务,产品覆盖桌面、手机、平板、机顶盒等平台,在全球范围内拥有几千万活跃用户。傲游致力于技术研发,于2009年10月28日在北京成立国内最大的专业浏览器研发中心,并在2010年8月份发布了国内首个独立核心浏览器产品:傲游3。目前傲游浏览器产品语言版本多达37种,遍布120个国家和地区,是国产软件走向世界的排头兵。 傲游浏览器3.1.8.1000 本次更新包含的新特性有: + 用户选择 "使用鼠标右键关闭标签" 后, 可以按住 Shift 在标签上点击右键打开标签内容菜单. 本次更新优化了下列功能: * 大幅增强极速核心的网页兼容性. 本次更新解决了如下问题: [主框架] * 解决同时按下 Alt + Ctrl + ESC 时, 浏览器失去响应的问题. * 重置所有选项后, 快速保存图片的路径会消失. * 已锁定的标签会干扰关闭全部标签的动作, 使其左侧的标签无法被关闭. * 调整侧边栏大小会使侧边栏失去焦点. [Webkit 核心] * 拖动某些网页中的图片会弹出下载. * 在网页内的文本框中选择文本, 鼠标右键菜单中没有 "粘贴" 项目. [用户界面] * 某些情况下, 取消 "后台标签显示关闭按钮" 后, 按钮依旧会显示, 切换标签后消失. * 在资源嗅探器中, 资源URL过长时, Tooltip 会出现滚动条. * 自定义界面的设置无法对新建的窗口生效. [智能地址栏] * 无论如何设置, 从地址栏打开的网页总会激活新标签. [智能填表] * 在输入框下拉菜单选择通用填表项时, 输入框会失去焦点. [迅雷下载模块] * 在英文系统下, 第一次启动傲游迅雷加速下载时语言显示不正确. * 关闭浏览器时迅雷下载模块可能会崩溃. 傲游浏览器3.1.7.1000 本次更新包含如下新特性: + 支持HTML5特性: Skydrive 直接拖拽添加上传文件, Gmail/163等邮件直接拖拽添加附件. 本次更新优化了下列功能: * 优化数据同步逻辑. * 优化内核启动速度. * 傲游迅雷加速下载使用新界面. 本次更新解决的问题如下: [主框架] * 没有启用老板键时, 点击任务栏托盘区的图标无效. * 某些情况下会出现无效的浏览历史条目. * 非自动登录情况下自定义界面设置无法保存. [Webkit 核心] * 运行迅雷, 有道词典或灵格斯划词翻译时, 浏览器可能会失去响应. * 解决一些核心崩溃的问题. * 增强核心兼容性. * 选中一段图文混排的文字, 在图片上点击鼠标右键的时候, 不会出现 "复制" 项目. [Trident 核心] * 兼容模式 window.open 未利用空白页. [用户界面] * 解决某种情况下侧边栏显示错误的问题. * 嗅探器的选择框在没有嗅探到内容的情况下, 勾选后无法取消. * 解决一些傲游迅雷加速下载的界面和语言问题. [侧边栏] * 浏览器登录时, 会重置侧边栏微博扩展的登录状态. [下载] * 傲游迅雷加速下载可能出现高资源占用率. * 增强傲游迅雷加速下载文件的兼容性. [资源嗅探器] * 批量下载显示错乱. [开发者工具] * 在网页中开启审查元素, 使用鼠标右键菜单保存图片, 会保存为 HTML 文件. 傲游浏览器3.1.6 正式版 3.1.6.1000 2011-08-25 本次更新包括下列优化: * 优化浏览器启动速度. * 优化页面 gif 动画播放效率. 本次更新对修复了以下问题: [Webkit 核心] * 解决一些页面兼容性问题. * 解决一些崩溃问题. * 从 WebSite-Watcher 调用傲游3, 打开保存在本地的网页时会出现 404 错误. * 对特殊字符转码问题会导致页面出现 404 错误. * 个别用户的图片另存为对话框无法弹出. * 在 Google+ 页面点击 "Start a Hangout" 后, 弹出 C++ Runtime 错误. * 点击 Facebook 连接提示登录. [主框架] * 解决部分系统中浏览器无法启动的问题. * 非自动登录浏览器帐号的情况下, 浏览器的侧边栏状态无法保存. * 用任务栏图标切换到傲游 3 窗口会出现焦点问题. [用户界面] * 使用数字键盘快捷键缩放网页时, 状态栏的缩放按钮显示数值不会变化. [收藏] * 在收藏栏中的 "更多收藏" 中, 进行快捷组和文件夹的转换时会有延迟. * 某些情况下收藏栏文件夹的鼠标右键菜单会出现闪烁. [下载] * 极速模式直接打开某些 FTP 下载链接时, 会提示无法连接到网站. [资源嗅探器] * 有时修改语言会导致嗅探器中的资源列表消失. [数据同步] * 不编辑过滤规则点击 "应用" 时, 会错误的进行同步. [阅读模式] * 已经隐藏的工具条仍然响应鼠标事件. * 增强阅读模式兼容性. * 某些情况下页面不响应鼠标动作. 傲游浏览器3.1.5 正式版 + 加入我的魔盒(即外部工具), 入口位于快速工具栏, 用户可以从魔盒中快速调用计算器, 画图等系统工具, 还可以加入自定义的工具. + 工具栏及侧边栏支持通过鼠标拖拽调整顺序. + 拼写检查支持10种语言, 中文版不包含此功能. + 中文侧边栏加入新浪微博扩展. + 加入恶意网址拦截计数, 傲游时刻确保用户的网络浏览安全. * 优化标签切换性能. * 优化极速模式内存占用 * 滚动条体验增强 * 为截图工具条添加了拖拽手柄. 傲游浏览器3.1.4 正式版 启用全新设计的快速访问, 用户可以自定义背景图, 可定义最多9页快速访问内容。 添加了打印预览功能。 标签自动刷新可以指定时间。 超级截图现在能够识别窗体 添加一款标签下置皮肤, 基于现代风格定制。 3.1.3.2000 2011-07-14 本次更新解决了以下问题 主框架 设置stunnel类型的代理后, 记事本不能同步. Webkit 核心 使用鼠标右键菜单中的复制在网页上复制文字的时候, 粘贴到记事本中会丢失换行符. 收藏 从收藏栏一次性打开某文件夹下所有收藏项目时,标签的顺序与收藏的顺序相反. 傲游浏览器3.1.3 正式版 [阅读模式] 可以使用左右方向键进行翻页, 使用上下方向键进行滚屏. [超级截图] 为气泡添加了白色背景. 文字框可以拖动. 放大镜坐标改成截图尺寸. 傲游3.1.2.1000正式版重要更新: 英文拼写检查 英文拼写检查可以在你输入过程中提示可能有错误的英文单词, 用红色波浪线进行标注, 在标注上点击鼠标右键可以看到词库的拼写建议. 当然你也可以把自造词或者词库中没有的单词加入词库 最易用的广告过滤规则分享与安装 通过广告过滤规则分享功能,用户可以轻松分享自己独有的广告过滤规则。过滤规则的安装方式也大幅简化,用户只需复制规则,傲游3浏览器即可自动判断,并且进行安装。 历史日历 按Ctrl+H,可以打开傲游3的历史,本次更新在历史中添加了历史日历功能,通过此功能可以直接转跳到特定的日期的历史。日历格式与普通日历一致,以月为单位,便于用户查找、定位。 自动刷新 在标签上点击右键,即可设置自动刷新选项,刷新间隔为5秒、10秒、30秒三个档次。自动刷新功能可以保持网页在最新状态,以便用户随时查询。 3.1.1.600_Beta本次更新加入的特性有: Webkit核心 加入英文拼写检查功能,支持通过鼠标右键菜单添加用户词典. 标签 标签的右键菜单加入了"自动刷新"功能. 侧边栏 中文版侧边栏加入游戏及团购的快速入口. 侧边栏使用扩展方式实现,高级用户可以通过"%appdata%\Maxthon3\Addons\"下的扩展包,自定义侧边栏按钮以及内容. 历史管理器 加入日历视图 广告过滤 加入广告过滤的分享及自动安装功能 本次更新包括以下功能优化: 同步 同步中心支持是否启用收藏同步 团购点评 团购点评图标更新,显示评论数. Flash 内建Flash插件更新至10.3.181.26 本次更新解决了下列问题: 主框架 修正设置快速保存目录时可能会出现的程序崩溃. 切换代理后不会立即生效. WindowsXP系统下,使用IE6核心时,淘宝商城订单页面自动跳转为兼容模式,会显示"无法购买". 解决在部分团购网站无法顺利支付的问题. 解决拍拍网使用中信银行无法顺利支付的问题. 安全 修正WebkitBugzilla52688安全问题. Webkit核心 解决一个历史文件导致登录崩溃的问题. 在某些网站密码框中无法正确屏蔽密码. 在Facebook点击图片或视频进入影院模式,点击关闭按钮后浏览器显示的页面不正常. Facebook照片关闭时,会回到个人主页. 点击某些网页上的连接,地址栏不会改变. 无法在某些Flash中输入中文. 某些网页会无故跳转到手机版. Trident核心 某些网页上的操作会导致无故多开一个页面. 用户界面 WindowsXP系统下启动浏览器侧边栏显示异常. 选项 不自动登录账户的情况下,登录账户后,"只允许打开一个浏览器窗口"选项不起作用 智能地址栏 输入法上屏的字母地址栏不会自动补全. 下载 下载意外断开后,恢复下载时会出现问题. 下载路径异常时可能会建立一个无法正常删除的文件夹. http://bbs.maxthon.cn/viewthread.php?tid=507136 开发者工具 在www.yahoo.com中使用审查元素,首次总是定位在标签上. 有时首次点击审查元素时无法定位. 傲游浏览器3.1.1 正式版 Webkit 升级至 534.12 , 综合性能提升 32.6% JavaScript 引擎升级综合性能提升20%. 加入团购点评功能, 傲游团购点评网站同步上线 http://tuan.maxthon.cn/dianping/ 加入同步中心 加入团购点评功能, 傲游团购点评网站同步上线 http://tuan.maxthon.cn/dianping/ 加入同步中心 支持皮肤文件(*.mxskin)关联, 加入皮肤管理器 自动订阅常用网站过滤规则及全局规则 大幅优化了浏览器的性能与稳定性 傲游浏览器3.0.24.1000 正式版 在菜单>>视图>>自定义界面中加入"工具按钮"项目 在多重搜索中加入比价搜索 加入快递查询功能 现在点击"打开", 目标将会被存入临时目录 增加是否启用多窗口的选项 支持查看 cookie 扩充了安全网址认证库 优化标签打开、切换、关闭性能 增强了收藏同步协议, 支持了更多的网络环境 支持填表和保存表单的快捷键、鼠标手势自定义 右键"目标另存为"对话框采用系统风格
目 录 译者序 前言 第一部分 预备知识 第1章 C++程序设计 1 1.1 引言 1 1.2 函数与参数 2 1.2.1 传值参数 2 1.2.2 模板函数 3 1.2.3 引用参数 3 1.2.4 常量引用参数 4 1.2.5 返回值 4 1.2.6 递归函数 5 1.3 动态存储分配 9 1.3.1 操作符new 9 1.3.2 一维数组 9 1.3.3 异常处理 10 1.3.4 操作符delete 10 1.3.5 二维数组 10 1.4 类 13 1.4.1 类Currency 13 1.4.2 使用不同的描述方法 18 1.4.3 操作符重载 20 1.4.4 引发异常 22 1.4.5 友元和保护类成员 23 1.4.6 增加#ifndef, #define和#endif语句 24 1.5 测试与调试 24 1.5.1 什么是测试 24 1.5.2 设计测试数据 26 1.5.3 调试 28 1.6 参考及推荐读物 29 第2章 程序性能 30 2.1 引言 30 2.2 空间复杂性 31 2.2.1 空间复杂性的组成 31 2.2.2 举例 35 2.3 时间复杂性 37 2.3.1 时间复杂性的组成 37 2.3.2 操作计数 37 2.3.3 执行步数 44 2.4 渐进符号(O、 健?、 o) 55 2.4.1 大写O符号 56 2.4.2 椒?58 2.4.3 符号 59 2.4.4 小写o符号 60 2.4.5 特性 60 2.4.6 复杂性分析举例 61 2.5 实际复杂性 66 2.6 性能测量 68 2.6.1 选择实例的大小 69 2.6.2 设计测试数据 69 2.6.3 进行实验 69 2.7 参考及推荐读物 74 第二部分 数据结构 第3章 数据描述 75 3.1 引言 75 3.2 线性表 76 3.3 公式化描述 77 3.3.1 基本概念 77 3.3.2 异常类NoMem 79 3.3.3 操作 79 3.3.4 评价 83 3.4 链表描述 86 3.4.1 类ChainNode 和Chain 86 3.4.2 操作 88 3.4.3 扩充类Chain 91 3.4.4 链表遍历器类 92 3.4.5 循环链表 93 3.4.6 与公式化描述方法的比较 94 3.4.7 双向链表 95 3.4.8 小结 96 3.5 间接寻址 99 3.5.1 基本概念 99 3.5.2 操作 100 3.6 模拟指针 102 3.6.1 SimSpace的操作 103 3.6.2 采用模拟指针的链表 106 3.7 描述方法的比较 110 3.8 应用 111 3.8.1 箱子排序 111 3.8.2 基数排序 116 3.8.3 等价类 117 3.8.4 凸包 122 3.9 参考及推荐读物 127 第4章 数组和矩阵 128 4.1 数组 128 4.1.1 抽象数据类型 128 4.1.2 C++数组 129 4.1.3 行主映射和列主映射 129 4.1.4 类Array1D 131 4.1.5 类Array2D 133 4.2 矩阵 137 4.2.1 定义和操作 137 4.2.2 类Matrix 138 4.3 特殊矩阵 141 4.3.1 定义和应用 141 4.3.2 对角矩阵 143 4.3.3 三对角矩阵 144 4.3.4 三角矩阵 145 4.3.5 对称矩阵 146 4.4 稀疏矩阵 149 4.4.1 基本概念 149 4.4.2 数组描述 149 4.4.3 链表描述 154 第5章 堆栈 161 5.1 抽象数据类型 161 5.2 派生类和继承 162 5.3 公式化描述 163 5.3.1 Stack的效率 164 5.3.2 自定义Stack 164 5.4 链表描述 166 5.5 应用 169 5.5.1 括号匹配 169 5.5.2 汉诺塔 170 5.5.3 火车车厢重排 172 5.5.4 开关盒布线 176 5.5.5 离线等价类问题 178 5.5.6 迷宫老鼠 180 5.6 参考及推荐读物 188 第6章 队列 189 6.1 抽象数据类型 189 6
TWincat 3.1.4024.11 是一款用于实时控制系统的软件,下面是关于它的安装教程: 1. 首先,确保您已经下载了 TWincat 3.1.4024.11 的安装程序,可以从官方网站上下载。 2. 双击运行安装程序,开始安装过程。您可以选择安装的目标文件夹,或者使用默认的安装路径。 3. 接下来,您需要接受软件许可协议。请仔细阅读协议内容,如果同意,请勾选“我接受许可协议”选项,并点击“下一步”。 4. 在接下来的步骤中,您可以选择是否要安装额外的特性组件,比如 TwinCAT PLC Simulation XAE。根据您的需求进行选择,并点击“下一步”。 5. 在选择安装类型的界面上,您可以选择“典型安装”或者“自定义安装”。典型安装会安装常用的组件,自定义安装可以让您选择安装哪些组件。点击相应的选项,并点击“下一步”。 6. 在选择目标设置的界面上,您可以选择需要安装的目标系统。TWincat 能够在不同操作系统和平台上运行,包括 Windows 7/8/10、Windows Server 2008/2012、Beckhoff Embedded PC 和其他支持的操作系统。根据您的需求进行选择,并点击“下一步”。 7. 在确认安装的界面上,您可以查看您的安装设置。如果一切都正确无误,点击“安装”按钮开始安装过程。 8. 安装过程需要一定的时间,请耐心等待。安装完成后,您可以选择立即启动 Twincat 3,或者稍后手动启动。 以上就是关于 TWincat 3.1.4024.11 的安装教程。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值