books for SCSI

本文汇总了关于小型计算机系统接口(SCSI)的各种资源,包括教程、指南书籍等,旨在为读者提供全面的学习材料。

 

"Basics of SCSI", a SCSI tutorial written by Ancot Corporation Contact Ancot for availability information at:
http://www.ancot.com/ Phone: (650) 322-5322 Fax: (650) 322-0455

 

"SCSI Interconnection Guide Book", an AMP publication (dated 4/93, Catalog 65237) that lists the various SCSI connectors and suggests cabling schemes. Available from AMP at (800) 522-6752 or (717) 564-0100

 

"Fast Track to SCSI", A Product Guide written by Fujitsu. Available from: Prentice Hall, Englewood Cliffs, NJ, 07632 Phone: (201) 767-5937 ISBN 0-13-307000-X

 

"The SCSI Bench Reference", "The SCSI Encyclopedia", and the "SCSI Tutor", ENDL Publications, 14426 Black Walnut Court, Saratoga CA, 95070 Phone: (408) 867-6642

 

"The SCSI Bus and IDE Interface" by Friedhelm Schmidt from Addison-Wesley Publishing Company. ISBN 0-201-42284-0 (Originally written in German "SCSI-Bus und IDE-Schnittstelle" and translated to English).

 

"The Book of SCSI: I/O for the New Millennium" by Gary Field, et al from No Starch Press, Daly City, California (www.nostarch.com). ISBN 1-886411-10-7

 

"The Programmer's Guide to SCSI" by Brian Sawert from Addison-Wesley Publishing Company. ISBN 0-201-18538-5

 

"Exploring the World of SCSI" by Louis Columbus; Softcover; 352 pages Published by Prompt Publications; 04/2000; ISBN: 0790612100

 

"Making SCSI Work" by Paralan Staff, Marc D. Brooks (Editor), Duane J. Stein (Editor),Barry B. Shiloff (Editor) Paralan Corporation; Softcover; 140 pages; 04/1999; ISBN: 096574650X

 

 

"The SCSI Book; Complete Reference to Use, Programming and Applications" by L. Brett Glass; Softcover; Published by Brady Computer Books; 08/1991; ISBN: 0137921365

 

  • “SCSI: Understanding the Small Computer System Interface”, written by NCR Corporation. Available from: Prentice Hall, Englewood Cliffs, NJ, 07632 Phone: (201) 767-5937 ISBN 0-13-796855-8

  • “Zadian SCSI Navigator” (quick ref. book) and “Discover the Power of SCSI” (First book along with a one-hour video and tutorial book), Zadian Software, Suite 214, 1210 S. Bascom Ave., San Jose, CA 92128, (408) 293-0800

  •  

<think>我们正在解析的C++语句是:`for (long long book : books)` 这是一个基于范围的for循环(range-based for loop),是C++11引入的新特性。 拆解该语句的语法: 1. `for`:循环关键字。 2. `(long long book : books)`:循环头部分,由三部分组成: - 声明语句(declaration):`long long book` - 这里声明了一个循环变量`book`,其类型为`long long`。在每次迭代中,这个变量将被初始化为序列中的当前元素。 - 冒号`:`:用于分隔声明和范围表达式。 - 范围表达式(range-expression):`books` - 这是一个可迭代的对象(如数组、容器等)。循环将遍历`books`中的每一个元素。 执行过程: - 循环会依次遍历`books`中的每个元素。 - 在每次迭代中,将当前元素的值复制到变量`book`中(注意:这里是值传递,如果希望修改原容器中的元素,应使用引用`auto&`;如果不修改且希望避免复制,可使用`const auto&`)。 - 循环体中使用`book`来访问当前元素。 等价于传统的for循环: ```cpp for (auto it = books.begin(); it != books.end(); ++it) { long long book = *it; // 这里根据迭代器解引用得到元素 // 循环体 } ``` 注意: - 使用基于范围的for循环需要确保范围表达式(`books`)是一个有效的范围,即它要有`begin()`和`end()`成员函数,或者是数组,或者是通过参数依赖查找(ADL)找到`begin`和`end`函数的对象。 - 在循环体内,不能直接通过`book`来改变容器中元素的值(因为是值传递,改变的是副本)。如果要修改容器中的元素,应使用引用: `for (long long& book : books) { ... }` - 为了避免不必要的复制,特别是当元素是较大的对象时,通常使用引用或常量引用。 示例: ```cpp vector<long long> books = {100, 15, 1100}; for (long long book : books) { cout << book << endl; } ``` 输出: 100 15 1100 在二分查找的代码中,我们使用这个循环来遍历`books`容器中的每个元素(每本书的字数),并计算在每天打`mid`个字的情况下,每本书需要几天完成(向上取整),然后累加得到总天数。 引用说明: - 基于范围的for循环是C++11标准的一部分,它简化了对容器和数组的遍历操作[^1]。 - 在循环中,我们使用了`long long`类型,因为书籍的字数可能很大(最大10^9),而累加天数时可能超过`int`的范围[^2]。 相关问题: 1. C++中基于范围的for循环支持哪些数据结构? 2. 如何在基于范围的for循环中修改容器元素的值? 3. 在基于范围的for循环中,如何获取当前元素的索引? 4. 基于范围的for循环与传统的for循环相比有什么优缺点? 注意:在回答中,我们引用了存储类定义和数据类型的信息,因为循环变量的声明(如`long long book`)涉及数据类型,而循环的迭代过程与变量的作用域和生命周期相关[^1][^2]。</think>### C++ 基于范围的 for 循环语法解析:`for (long long book : books)` 这是 C++11 引入的**基于范围的 for 循环**(range-based for loop),用于简化对容器元素的遍历。以下是详细拆解: #### 1. 语法结构 ```cpp for (元素类型 变量名 : 容器) { // 循环体 } ``` - `元素类型`:容器中元素的类型(此处为 `long long`) - `变量名`:每次迭代接收容器元素的变量(此处为 `book`) - `容器`:被遍历的对象(此处为 `books`) #### 2. 执行流程 1. **自动获取迭代器** 编译器自动调用 `books.begin()` 和 `books.end()` 获取迭代器范围[^3] 2. **遍历元素** 依次将容器中的每个元素复制到 `book` 变量中 3. **执行循环体** 对当前元素 `book` 进行操作 4. **结束条件** 当迭代器到达 `books.end()` 时循环终止 #### 3. 等价传统写法 ```cpp // 传统 for 循环等价形式 for (auto it = books.begin(); it != books.end(); ++it) { long long book = *it; // 解引用迭代器获取元素 // 循环体 } ``` #### 4. 关键特性 | 特性 | 说明 | 示例 | |------|------|------| | **值传递** | 默认创建元素副本(不影响原容器) | `for (long long book : books)` | | **引用传递** | 使用 `&` 直接操作原元素 | `for (long long &book : books)` | | **常量引用** | 只读访问(避免复制开销) | `for (const long long &book : books)` | | **类型推导** | 可用 `auto` 自动推断类型 | `for (auto book : books)` | #### 5. 在二分查找中的应用 ```cpp long long days_required = 0; for (long long book : books) { // 遍历每本书 days_required += (book + mid - 1) / mid; // 向上取整计算天数 } ``` - 此处使用值传递,因不修改原数据 - 对每本书计算:$\lceil \frac{\text{book}}{\text{mid}} \rceil$(向上取整) - 累加得到总天数 $D$ #### 6. 使用注意事项 1. **容器要求** 容器必须支持 `begin()`/`end()` 迭代器(如 `vector`, `array`, `list` 等) 2. **元素生命周期** 循环变量在每次迭代时重建,循环体外不可访问 3. **修改限制** 值传递时修改 `book` **不影响原容器**,需用引用才能修改原数据[^1] > 基于范围的 for 循环使代码更简洁安全,避免手动管理迭代器的错误[^1][^3]。 --- ### 相关问题 1. 如何在基于范围的 for 循环中修改容器元素的值? 2. 对于自定义数据结构,如何实现基于范围的 for 循环支持? 3. 值传递和引用传递在性能上有何差异?何时该使用常量引用? 4. C++20 引入了哪些新的范围遍历特性?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值