math/rand生成非负数的所有整数函数.
rand.Int() int // [0, MaxInt]
rand.Int31() int32 // [0, MaxInt32]
rand.Int31n(n int32) int32 // [0, n)
rand.Int63() int64 // [0, MaxInt64]
rand.Int63n(n int64) int64 // [0, n)
rand.Intn(n int) int // [0, n)
Run Code Online (Sandbox Code Playgroud)
我想生成[-m,n]范围内的随机数.换句话说,我想生成正数和负数的混合.
这让我困扰了一段时间.它是我(缺乏)理解静态和动态内存分配之间差异的核心.以下数组是一个普通的静态数组,它应该意味着内存是在编译期间分配的,对吗?然而,我已经设置好了,以便用户在运行时输入数组大小.
#include <iostream>
using namespace std;
int main() {
cout << "how many elements should the array hold? ";
int arraySize;
cin >> arraySize;
int arr[arraySize];
for (int i = 0; i < arraySize; ++i)
arr[i] = i * 2;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
请注意,此程序中没有new或delete运算符.它在Xcode 4.2(默认的Clang编译器)以及我学校的UNIX服务器(GCC 4.4.5)中工作正常.arr在编译时创建数组时,编译器如何知道要分配多少内存?这只是我的编译器的侥幸,危险的代码,可能会破坏其他内存,或者这是合法的吗?
我注意到使用gzip包使用bufio内部读取gzip压缩的文件,但不写他们.我知道缓冲对于I/O性能很重要,那么缓冲gzip writer的正确方法是什么?
// ignoring error handling for this example
outFile, _ := os.Create("output.gz")
// Alternative 1 - bufio.Writer wraps gzip.Writer
gzipWriter, _ := gzip.NewWriter(outFile)
writer, _ := bufio.NewWriter(gzipWriter)
// Alternative 2 - gzip.Writer wraps bufio.Writer
writer, _ := bufio.NewWriter(outFile)
gzipWriter, _ := gzip.NewWriter(writer)
// Alternative 3 - replace bufio with bytes.Buffer
buf := bytes.NewBuffer()
gzipWriter, _ := gzip.NewWriter(&buf)
Run Code Online (Sandbox Code Playgroud)
另外,在关闭它之前,我是否需要Flush()gzip writer或bufio writer(或两者),或者关闭它会自动刷新writer?
UPDATE:我现在明白了,这两个读取和写入使用gzip缓冲.所以缓冲a gzip.Writer真的是双缓冲.@peterSO认为这是多余的.@Steven Weinberg认为双缓冲可能减少系统调用的数量,但建议基准确定.
该sort包提供了这些函数,用于对内置切片类型进行排序:
sort.Ints(a []int)sort.Float64s(a []float64)sort.Strings(a []string)它还提供这些类型与转换内置片类型来命名类型Len(),Less(),Search(),Sort(),和Swap()方法:
sort.IntSlicesort.Float64Slicesort.StringSlice这意味着我可以像这样排序一些int ...
// Function
slice := []int{5, 4, 3, 2, 1}
sort.Ints(slice) // sort in place
Run Code Online (Sandbox Code Playgroud)
或者像这样......
// Method
slice := sort.IntSlice{5, 4, 3, 2, 1}
slice.Sort() // also sort in place
Run Code Online (Sandbox Code Playgroud)
是否最好使用函数或方法排序?是否有时候一种形式优先于另一种形式?
我对以下内容感兴趣: