首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

從 C 到 C++ 學習筆記:容器與隨機數

     編輯:C++ 入門

一、數組 vs Vector

1. 定義差異

// C 風格數組:必須指定大小,運行時無法獲取長度
int arr[100];
int len = sizeof(arr)/sizeof(arr[0]); // 僅編譯期常量有效

// C++ vector:動態大小,自帶 size()
vector<int> v1;                    // 空
vector<int> v2(arr, arr+10);       // 從數組範圍構造
vector<int> v3(10, 0);             // 10 個 0

2. 大小管理

  • 數組:大小固定,strlen 僅適用字符串,通用數組無長度感知
  • Vector:v.size() 即時獲取,v.push_back() 自動擴容

3. 頭文件

數組無需頭文件,Vector 需 #include <vector>

二、偽隨機數:rand() 與 srand()

1. 頭文件

#include <cstdlib> (C++ 風格) 或 <stdlib.h>

2. 核心機制

  • srand(seed):設置種子,決定序列起點。同種子產生同序列
  • rand():返回 [0, RAND_MAX] 偽隨機整數
  • 組合使用:srand(time(0)) + rand() 獲得「不同」序列

3. 常用範圍轉換

// [0, n-1]
int r = rand() % n;

// [a, b]
int r = a + rand() % (b - a + 1);

// [0.0, 1.0) 浮點
double r = (double)rand() / RAND_MAX;

4. 注意事項

  • 程序中 僅調用一次 srand,通常在 main 開頭
  • rand() 線程不安全,多線程環境建議用 C++11 <random> 庫
  • 偽隨機非加密安全,密碼學用途需用 std::random_device 或專用庫

現代 C++ 建議

C++11 引入 <random> 提供更優的隨機數設施:

#include <random>
std::mt19937 gen(std::random_device{}());
std::uniform_int_distribution<> dis(1, 100);
int r = dis(gen);  // 更高質量、類型安全、分布豐富

標準容器優先用 vector, string, map 等,避免裸數組與手動內存管理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved