此篇文章整理自我以前学习Swift时的一些练习代码,其存在的意义多是可以通过看示例代码更快地回忆Swift的主要语法。

如果你想系统学习Swift或者是Swift的初学者请绕路,感谢GithubThe Swift Programming Language开源翻译的中文版,感谢极客学院wiki提供的PDF版本。

代码和PDF版本上传至Github,有兴趣的可以下载下来试试。

SwiftTour

Base

var str = "Hello, World!"

print(str)

// 变量用var声明,常量用let声明,变量类型自动推断
// 可在变量后声明类型,用冒号分隔
var myVariable = 42
let myConstant = 42
myVariable = 50
let explictDouble: Double = 60 // 值永远不会被隐式转换为其他类型,需要转换必须采用显式转换
let label = "The width is "
let width = 94
let widthLabel = label + String(width) // 更为常见的将值转换为字符串的方法
let apples = 3
let oranges = 5
let appleSummary = "I have \(apples) apples"
let fruitSummary = "I have \(apples + oranges) pieces of fruit" // []用来创建数组或字典
var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[1] = "bottle of water" var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic"
]
occupations["Jayne"] = "Public Relations" // 创建一个空数组或者字典
let emptyArray1 = [String]()
let emptyDictionary1 = [String: Float]()
let emptyArray2: [String] = []
let emptyDictionary2: [String: Float] = [:] // 控制流,if和switch用于选择,for-in,for,while和repeat-while用于循环
let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
if score > 50 {
teamScore += 3
} else {
teamScore += 1
}
}
print(teamScore) // 由于不支持隐式转换,条件必须是一个布尔表达式
// 一般采用可选值配合if和let,处理值缺失判断
var optionalString: String? = "Hello"
print(optionalString == nil)
var optionalName: String? = "John Appleseed"
var greeting = "Hello"
if let name = optionalName {
greeting = "Hello, \(name)"
} // Switch支持任意类型的数据以及各种比较操作
let vegetable = "red pepper" switch vegetable {
case "celery" :
print("Add some raisins and make ants on a log")
case "cucumber", "watercress" :
print("That woould make a good tea sandwich")
case let x where x.hasSuffix("pepper") :
print("Is it a spicy \(x)?")
default :
print("Everything tastes good in soup")
} // 使用for-in遍历字典
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25],
]
var largest = 0
var numberGroup: String = "Null"
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
numberGroup = kind
}
}
}
print(numberGroup, largest) // while循环
var n = 2
while n \< 100 {
n = n * 2
}
print(n) var m = 2
repeat {
m = m * 2
} while m \< 100
print(m) // 可以在循环中使用..\<来表示范围,包含上界使用...
var firstForLoop = 0
for i in 0..\<4 {
firstForLoop += i
}
print(firstForLoop) var secondForLoop = 0
for var i = 0; i \< 4; ++i {
secondForLoop += i
}
print(secondForLoop)

函数

// 使用func来声明函数,尾置返回
func greet(name: String, day: String) -\>String {
return "Hello \(name), today is \(day)"
}
greet("Bob", day: "Tuesday") // 使用元组来让函数返回多个值
func calculateStatistics(scores: [Int])-\>(min: Int, max: Int, sum: Int) {
var min = scores[0]
var max = scores[0]
var sum = 0
for score in scores {
if score > max {
max = score
} else if score < min {
min = score
}
sum += score
}
return (min, max, sum)
}
let statistics = calculateStatistics([5, 3, 100, 3, 9])
print(statistics.sum) // 函数可以带有可变个数的参数,这些参数在函数内表现为数组的形式
func sumOf(numbers: Int...)-\>Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
sumOf()
sumOf(42, 597, 12) // 函数可以嵌套,被嵌套的函数可以访问外侧函数的变量
func returnFifteen()-\>Int {
var y = 10
func add() {
y += 5
}
add()
return y
}
print(returnFifteen()) // 函数是类型,也可以作为另外一个函数的返回值
func makeIncrementer()-\>(Int -\> Int) {
func addOne(number: Int)->Int {
return 1 + number
}
return addOne
} var increment = makeIncrementer()
print(increment(7)) // 函数也可以当做参数传入另外一个函数
func hasAnyMatches(list: [Int], condition: Int -\> Bool)-\>Bool {
for item in list {
if condition(item) {
return true
}
}
return false
}
func lessThanTen(number: Int)-\>Bool {
return number < 10
}
var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, condition: lessThanTen) //闭包就是嵌套的匿名函数,{ in }
let mappedNumbers = numbers.map({number in 3 \* number})
print(mappedNumbers)
let sortedNumbers = numbers.sort{$0 \< $1}
print(sortedNumbers)

类和对象

// 使用class和类名创建一个类
class Shape {
var numberOfSides = 0
func simpleDescription() ->String {
return "A Shape with \(numberOfSides) sides"
}
} var shape = Shape()
shape.numberOfSides = 7
var shapeDescription = shape.simpleDescription() // 使用init创建构造器,使用deinit创建一个析构函数
class NameShape {
var numberOfSides: Int = 0
var name: String
init(name: String) {
self.name = name
}
func simpleDescription() ->String {
return "A Shape with \(numberOfSides) sides"
}
} // 子类重写父类的方法需要用override标记
class Squre: NameShape {
var sideLength: Double
init(sideLength: Double, name: String){
self.sideLength = sideLength
super.init(name: name)
numberOfSides = 4
}
func area()->Double {
return sideLength * sideLength
}
override func simpleDescription() -> String {
return "A square with sides of length \(sideLength)"
}
}
let test = Squre(sideLength: 5.2, name: "My test Square")
test.area()
test.simpleDescription() // 类的getter和setter
class EquilateralTriangle: NameShape {
var sideLength: Double = 0.0
init(sideLength: Double, name: String){
self.sideLength = sideLength
super.init(name: name)
numberOfSides = 3
}
var perimeter: Double {
get {
return 3.0 * sideLength
}
set {
sideLength = newValue / 3.0
}
}
override func simpleDescription() -> String {
return "An equilateral triangle with sides of length \(sideLength)"
}
}
var triangel = EquilateralTriangle(sideLength: 3.1, name: "a triangle")
print(triangel.perimeter)
triangel.perimeter = 9.9
print(triangel.sideLength) // 不需要计算属性,仍然需要在设置新值之前或之后运行代码,使用willset和didset
// 确保三角形的边长综合正方形的边长相同
class TriangleAndSquare {
var triangle: EquilateralTriangle {
willSet {
square.sideLength = newValue.sideLength
}
}
var square: Squre {
willSet {
triangel.sideLength = newValue.sideLength
}
}
init(size: Double, name: String) {
square = Squre(sideLength: size, name: name)
triangle = EquilateralTriangle(sideLength: size, name: name)
}
}
var triangleAndSquare = TriangleAndSquare(size: 10, name: "Another tested Shape")
print(triangleAndSquare.square.sideLength)
print(triangleAndSquare.triangle.sideLength)
triangleAndSquare.triangle = EquilateralTriangle(sideLength: 30, name: "Other")
print(triangleAndSquare.triangle.sideLength)
print(triangleAndSquare.square.sideLength) // 处理变量的可选值时,可以在操作前加?
let optionalSquare: Squre? = Squre(sideLength: 2.5, name: "Optional square")
let sideLength = optionalSquare?.sideLength
print(sideLength)

枚举和结构体

import Foundation

// 使用enum创建一个枚举,枚举可以包含方法
enum Rank: Int {
case Ace = 1
case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
case Jack, Queen, King
func simpleDescription()->String {
switch self {
case .Ace:
return "Ace"
case .Jack:
return "jack"
case .Queen:
return "queen"
case .King:
return "king"
default:
return String(self.rawValue)
}
}
}
let ace = Rank.Ten
let aceRawValue = ace.rawValue
print(aceRawValue)
print(ace.simpleDescription()) // 使用init?(rawValue:)初始化构造器在原始值和枚举值之间进行转换
let c = Rank(rawValue: 34)
print(c)
if let convertedRank = Rank(rawValue: 3) {
let threeDescription = convertedRank.simpleDescription()
} // 可以不设置原始值,但系统会内部为枚举设置枚举值
enum Suit {
case Spades, Hearts, Diamonds, Clubs
func simpleDecription()->String {
switch self {
case .Spades:
return "spades"
case .Hearts:
return "hearts"
case .Diamonds:
return "diamonds"
case .Clubs:
return "clubs"
}
}
}
let hearts = Suit.Hearts
let heartsDescription = hearts.simpleDecription()
print(heartsDescription) // struct和class的区别是,结构体传值,类传引用
struct Card {
var rank: Rank
var suit: Suit
func simpleDescription()->String {
return "The \(rank.simpleDescription()) of \(suit.simpleDecription())"
}
}
let threeOfSpades = Card(rank: .Three, suit: .Spades)
let threeOfSpadesDescription = threeOfSpades.simpleDescription()
print(threeOfSpadesDescription) // 枚举成员的实例值
enum ServerResponse {
case Result(String,String)
case Error(String)
}
let success = ServerResponse.Result("6:00", "9:00")
let failure = ServerResponse.Error("Out of cheese")
let success1 = ServerResponse.Result("8:00", "9:00")
switch success1 {
case let .Result(sunrise, sunset):
let serverReponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)"
print(serverReponse)
case let .Error(error):
let serverReponse = "Failure... \(error)"
print(serverReponse)
}

协议

import Foundation

// 使用protocol来声明一个协议
protocol ExampleProtocol {
var simpleDescription: String { get }
mutating func adjust()
} // 类、枚举和结构题都可以实现协议
class SimpleClass: ExampleProtocol {
var simpleDescription: String = "A very simple class"
var anotherProperty: Int = 69105
func adjust() {
simpleDescription += "Now 100% adjusted"
}
}
var a = SimpleClass()
a.adjust()
let aDescription = a.simpleDescription
print(aDescription) // mutating关键字标记一个会修改结构体的方法
struct SimpleStructure: ExampleProtocol {
var simpleDescription: String = "A very simple class"
mutating func adjust() {
simpleDescription += " (adjusted)"
}
}
var b = SimpleStructure()
b.adjust()
let bDescription = b.simpleDescription
print(bDescription) // 使用extension来为现有的类型添加功能
extension Int: ExampleProtocol {
var simpleDescription: String {
return "The number \(self)"
}
mutating func adjust() {
self += 42
}
}
print(7.simpleDescription) // 可以像使用其他类型一样使用协议名
// 即使protocolValue变量运行时类型是simpleClass,编译器会把它的类型当作ExampleProtocol
// 这意味着,不能调用类在它实现协议之外的方法或属性
let protocolValue: ExampleProtocol = a
print(protocolValue.simpleDescription)
// print(protocolValue.anotherProperty) //Error

泛型

import Foundation

// 在尖括号里写一个名字来创建一个泛型函数或类型
func repeatItem<Item>(item: Item, numberOfTimes: Int)-\>[Item] {
var result = [Item]()
for _ in 0..<numberOfTimes {
result.append(item)
}
return result
}
let result = repeatItem("knock", numberOfTimes: 5)
print(result) // 也可以穿件泛型函数、方法、类、枚举和结构体
enum OptionalValue<Wrapped> {
case None
case Some(Wrapped)
}
var possibleInteger: OptionalValue<Int> = .None
possibleInteger = .Some(3) // 在类型名后面使用where来指定对类型的需求
// 比如,限定类型实现某一个协议,限定两个类型是相同的,或者限定某个类必须有一个特定的父类
func anyCommonElements\<T: SequenceType, U: SequenceType where T.Generator.Element: Equatable, T.Generator.Element == U.Generator.Element\>(lhs: T, \_ rhs: U)-\>Bool {
for lhsItem in lhs {
for rhsItem in rhs {
if lhsItem == rhsItem {
return true
}
}
}
return false
} print(anyCommonElements([1, 2 ,3], [3]))

SwiftBasics

SwiftBasics是对Swift类型和变量的介绍,有过别的语言基础的扫一眼即可。需要注意的地方主要是可选类型和元组,这是Swift特有的类型。

import Foundation

// Print(\_:,separator:,terminator:)
print("Hello World", "iOS",separator: "\*", terminator: "") // 可以通过分号,实现一行写多条独立语句
let cat = "Tom"; print("Hello \(cat)") // 可以访问不同整数类型的min和max属性来获取对应类型的最小值和最大值
// Swift中的Int长度与当前平台有关,在32位平台Int与Int32长度相同,在64位平台Int与Int64长度相同
print(Int8.max)
print(Int8.min)
print(Int.max)
print(Int64.max) // 整数和浮点数都可以增加额外的零并且包含下划线,并不会影响字面值
let oneMillion = 001\_000\_000
print(oneMillion) // 数值类型的转换需要调用类型内置构造器
// 可以通过扩展现有类型的构造器,使之接受更多的类型转换
let one:UInt8 = 1
let two:Int8 = 2
let onePlusTwo = one + UInt8(two)
print(onePlusTwo) // 可以把多个值组合成一个复合值,元组内的值可以是任意类型,并不要求是相同类型
let http404Error = (404, "Not Found")
print(http404Error) // 可以将一个元组的内容分解成单独的常量和变量
print("The status code is \(http404Error.0)")
let (statusCode, statusMessage) = http404Error
print("The status message is \(statusMessage)")
let (justTheStatusCode, \_) = http404Error
print("The status code is \(justTheStatusCode)") // 在元组命名时对单个元素进行命名
let http200Status = (statusCode: 200, statusMessage: "OK")
print("The status code is \(http200Status.statusCode)") // 可选类型
// 并不是所有对字符串都能转换为整数,Int构造器可能会失败,转换结果是可选类型
let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
print(convertedNumber) // 可以通过nil给可选类型变量赋值,nil不可以用于非可选类型
// 声明了一个可选类型变量没有赋值,系统会自动设置为nil
var serverReponseCode: Int? = 404
serverReponseCode = nil
var surveyAnswer: String? // 可以使用相等不等符判断可选类型是否有值,当确定有值时,可以用!强制解析
if convertedNumber != nil {
print("convertedNumber contains some integer value of \(convertedNumber!)")
} // 可选绑定可以用在if和while语句中来对可选类型的值进行判断并把值赋给一个临时常量或变量
if let actualNumber = Int(possibleNumber) {
print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")
} else {
print("\'\(possibleNumber)\' could not be converted to an integer")
} // 可以包含多个可选绑定在if语句中,并使用where子句做布尔值判断
if let firstNumber = Int("4"), secondNumber = Int("42") where firstNumber \< secondNumber {
print("\(firstNumber) < \(secondNumber)")
} // 用!声明隐式解析可选类型
// 隐式可选类型其实就是一个普通的可选类型,但是可以被当作非可选类型来使用,并不需要每次都解析可选值
let possibleString: String? = "An optional string"
let forcedString: String = possibleString!
print(forcedString)
let assumedString: String! = "An implicitly unwrapped optional string"
let implicitString: String = assumedString
print(implicitString)

SwiftBasicOperators

SwiftBasicOperators部分是对Swift支持的运算符的介绍。Swift支持大部分标准C语言的运算符,且改进许多特性来减少常规编码错误。如赋值符(=)不返回值,算术运算符会检测并不允许溢出。区别于C语言,在Swift中,你可以对浮点数取余运算(%)。此外,Swift还提供了C语言中没有的区间运算符(a..\<b和a...b)。

import Foundation

// 如果赋值的右边是一个多元组,它的元素可以马上被分解成多个常量或变量
let (x, y) = (1, 2)
print(x, y) // 取余运算,对负数b求余时,b的符号会被忽略
print(9 % 4)
print(-9 % 4)
print(9 % -4) // 浮点数求余
print(8 % 2.5) // 一元负号和一元正号运算符写在操作数之前,中间没有空格
// 注意的是,一元正号不做任何改变地返回操作数的值
let minusSix = -6
print(-minusSix)
print(+minusSix) // 空合运算符 a ?? b
// 表达式a必须是Optional类型,b的类型必须与a的存储值类型一致
// 如果a为nil,则返回b的值。如果a有值,则返回a的解析值。
// 并不会改变a和b的值
let defaultColorName = "red"
var userDefinedColorName: String?
var colorNameToUse = userDefinedColorName ?? defaultColorName
print(colorNameToUse, userDefinedColorName)
userDefinedColorName = "grren"
colorNameToUse = userDefinedColorName ?? defaultColorName
print(colorNameToUse, userDefinedColorName) // 区间运算符
for index in 1...5 {
print("\(index) * 5 = \(index * 5)")
}
let names = ["Anna", "Alex", "Brain", "Jack"]
let count = names.count
for i in 0..\<count {
print("第\(i)个人叫\(names[i])")
}

SwiftStrings

SwiftStrings部分主要介绍Swift字符串与字符。Swift的String和Character类型提供了一种快速的兼容Unicode的方式处理文本,字符串的每个字符都是Unicode字符,支持访问Unicode的不同表示形式。

import Foundation

// 每个字符串都是由编码无关的Unicode字符组成

// 创建一个空字符串
var emptyString = ""
var anotherEmptyString = String() // 通过isEmpty属性来判断字符串是否为空
if emptyString.isEmpty {
print("Nothing to see here")
} // 通过for-in循环遍历字符串的characters属性来获取每个字符的值
for character in "Dog!".characters {
print(character)
} // 字符串可以通过character字符数组初始化
let catCharacters:[Character] = ["C", "a", "t"]
let catString = String(catCharacters)
print(catString) // 连接字符串
let string1 = "Hello "
let string2 = "there"
var welcome = string1 + string2
let exclamationMark: Character = "!"
welcome.append(exclamationMark)
print(welcome) // \u{}表示Unicode字符,注意大括号里面的数值是十六进制
let dollarSign = "\u{24}"
let blackHeart = "\u{2665}"
let sparklingHeart = "\u{1F496}"
print(dollarSign, blackHeart, sparklingHeart) // Swift字符Character是采用可扩展字符集,即有的字符是由多个Unicode字符组合而成
let exampleCharacter1 = "\u{1112}\u{1161}\u{11AB}"
let exampleCharacter2 = "\u{D55C}"
print(exampleCharacter1,exampleCharacter2) // 字符串的characters.count方法计算的是字符串有多少字符组成
let unusualMenagerie = "Koala\u{1F1FA}\u{1F1F8}"
print(unusualMenagerie)
print(unusualMenagerie.characters.count)
var word = "cafe"
print("the number of characters in \(word) is \(word.characters.count)")
word += "\u{301}"
print("the number of characters in \(word) is \(word.characters.count)") // 字符串索引,String.Index,不支持整数做索引
// predecessor()取前一个索引,successor()取后一个索引
// advancedBy()获取索引
// 越界会引发运行时候错误
let greeting = "Guten Tag!"
print(greeting[greeting.startIndex])
print(greeting[greeting.endIndex.predecessor()])
print(greeting[greeting.startIndex.successor()])
let index = greeting.startIndex.advancedBy(7)
print(greeting[index])
print(word[greeting.startIndex])
print(greeting[index.advancedBy(1)])
print(greeting[index.advancedBy(2, limit: greeting.endIndex)]) // 使用characters属性的indices属性会创建一个包含所有索引的范围
for index in greeting.characters.indices {
print("\(greeting[index])", terminator: " ")
} // 调用insert()插入元素
// 调用insertContentsOf()插入字符串
welcome.insert("!", atIndex: welcome.endIndex)
print(welcome)
welcome.insertContentsOf("here".characters, at: welcome.endIndex.predecessor())
print(welcome) // removeAtIndex()删除索引指定的元素
// removeRange()删除索引范围元素
welcome.removeAtIndex(welcome.endIndex.predecessor())
print(welcome)
welcome.removeRange(welcome.endIndex.advancedBy(-4)..\<welcome.endIndex)
print(welcome) // 调用hasPrefix()判断是否包含指定前缀
// 调用hasSuffix()判断是否包含指定后缀
let prefixAndSuffix = ["abc123", "absfeh23", "23"]
var prefix = 0
var suffix = 0
for i in prefixAndSuffix {
if i.hasPrefix("ab") {
prefix++
}
if i.hasSuffix("23") {
suffix++
}
}
print(prefix, suffix) //Unicode编码形式,UTF-8(编码字符串为8位),UTF-16,UTF-32
let dogString = "Dog!

Swift常用语法示例代码(一)的更多相关文章

  1. Swift常用语法示例代码(二)

    此篇文章整理自我以前学习Swift时的一些练习代码,其存在的意义多是可以通过看示例代码更快地回忆Swift的主要语法. 如果你想系统学习Swift或者是Swift的初学者请绕路,感谢Github上Th ...

  2. java8-lambda常用语法示例

    常用语法示例: public static void main(String[] args) { List<OrderInfo> orderInfoList = Lists.newArra ...

  3. 常用Linq示例代码

    class Program { static void Main(string[] args) {   //1. Aggregate int[] testArr = new int[] { 1, 2, ...

  4. Proguard语法及常用proguard.cfg代码段

    本文主要ProGuard常用语法.标准proguard.cfg文件内容.常用proguard.cfg代码段及proguard与log level结合解决debug模式日志问题. 1.ProGuard的 ...

  5. Linux常用命令语法+示例

    原文出自:https://blog.csdn.net/seesun2012 Linux常用命令:Linux查看日志命令总结:Tomcat相关:Linux配置网卡,连接外网:Linux下安装JDK:Li ...

  6. 【原】iOS学习之Swift之语法2(精简版)

    1.可选类型和强制解包(?和!) 1> 可选类型(?)和强制解包(!) 在swift中,可选类型(?) 其根源是一个 枚举型,里面有 None 和 Some 两种类型.其实所谓的 nil 就是 ...

  7. C/C++ 开源库及示例代码

    C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...

  8. Sql常用语法以及名词解释

    Sql常用语法以及名词解释 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) D ...

  9. 常用 Java 静态代码分析工具的分析与比较

    常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...

随机推荐

  1. [转] GIS二次开发(C#+AE)

    乘风莫邪 原文GIS二次开发(C#+AE) 此过程描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: <</FONT>安装目录>/ ...

  2. Lighting System Design

    题意:从小到大给出额定功率,给出该功率费用,和灯泡的数量和单价,现在灯泡能在比他额定功率大的功率运行,求让所有灯泡正常工作的最小费用 分析: 问题转化为求用哪几个功率运行灯泡最小费用,dp[i]前i个 ...

  3. vmware ubuntu14.04虚拟机不能正常拷贝文件到windows且不能自适应虚拟机屏幕窗口自动变化的解决办法

    纠结于这个问题了半天.一直重复安装不同版本的vmare-tools, 一直没有任何效果.进入到/usr/bin/ 目录使用ll vm* 查看,发现和别的不同的是没有vmware-toolbox-cmd ...

  4. [Hive - LanguageManual] Archiving for File Count Reduction

    Archiving for File Count Reduction Note: Archiving should be considered an advanced command due to t ...

  5. Spring学习笔记(二)Spring基础AOP、IOC

    Spring AOP 1. 代理模式 1.1. 静态代理 程序中经常需要为某些动作或事件作下记录,以便在事后检测或作为排错的依据,先看一个简单的例子: import java.util.logging ...

  6. 树莓派I2C连接18B20

    按图连接设备 载入模块 sudo modprobe w1-gpio sudo modprobe w1-therm cd /sys/bus/w1/devices/ 显示结果 ls pi@raspberr ...

  7. 关于C++ vector的拷贝

    定义了vector变量,在使用时直接用了等号赋值,后来发现有问题,就查了一下vector怎么赋值? 说明:vector是一个构造对象,不能直接使用=符号进行复制,必须迭代每个元素来复制.或者重载=操作 ...

  8. Spark的应用程序

    Spark的应用程序,分为两部分:Spark driver 和 Spark executor.

  9. 用C语言实现ipv4地址字符串是否合法

    用程序实现ipv4地址字符串是否合法,主要考察的是C字符串的操作. 搜索了下,网上没有特别好的实现,自己实现了下,见笑于大家,请指正. #include <stdio.h> #includ ...

  10. HDU 4864 Task (贪心)

    Task 题目链接: http://acm.hust.edu.cn/vjudge/contest/121336#problem/B Description Today the company has ...