C++STL與泛型編程(3)容器之分類與測試

文章目錄

  • 容器的分類
  • 序列式容器(sequence containers)代碼示例
    • 輔助函數
    • array 容器
      • array容器的測試代碼
      • 測試代碼中部分函數解析
    • vector 容器
      • vector 容器的測試代碼
      • 測試代碼中部分函數解析
    • list 容器
      • list 容器的測試代碼
      • 測試代碼中部分函數解析
    • forward_list 容器
    • deque 容器
      • stack 容器
      • queue 容器
  • 關聯式容器(Associative Containers)代碼示例
    • multiset 容器
      • multiset 容器測試代碼
    • multimap 容器
      • multimap 容器測試代碼
    • unordered_multiset 容器
      • unordered_multiset 容器測試代碼
    • unordered_multimap 容器
    • set容器,map容器
    • unordered_set 容器
    • unordered_map 容器

容器的分類

  • 序列式容器(sequence containers)

    • Array
      • 連續空間,大小不能擴充
    • Vector
      • 連續空間,前面不可以擴充,后面可以擴充,
    • Deque
      • 連續空間,前后都可以擴充,
    • List
      • 雙向鏈表,每一個元素帶有兩個指針,其占用內存比單向鏈表要多
    • Forward-List
      • 單向鏈表

    在這里插入圖片描述

  • 關聯式容器(Associative Containers)(有key和value,適合做快速查找操作)

    • set/Multiset
      • set的key就是value,value就是key,set元素不能重復,Multiset元素可以重復
    • Map/Multimap
      • Map的每一個結點都有一個key和value,Map元素的key不能重復,Multimap元素的key可以重復
        在這里插入圖片描述
  • 不定序容器(Unordered Containers)(是關聯式容器中的一種,底部結構是hashtable)
    在這里插入圖片描述

序列式容器(sequence containers)代碼示例

輔助函數

//得到目標long
long get_a_target_long() {long target = 0;cout << "target (0~" << RAND_MAX << "):";cin >> target;return target;
}
//得到目標string
string get_a_target_string() {long target = 0;char buf[10];cout << "target (0~" << RAND_MAX << "):";cin >> target;//snprintf 將數值target轉換成字符串snprintf(buf,10,"%d",target);return string(buf);
}
//比較兩個long是否相等
int compareLongs(const void *a, const void *b) {return (*(long*)a- *(long*)b);
}
//比較兩個string是否相等
int compareStrings(const void *a, const void *b) {if (*(string*)a > *(string*)b)return 1;else if (*(string*)a < *(string*)b)return -1;elsereturn 0;
}

array 容器

array<long,ASIZE> c;	array數組,第一個參數是容器中的類型,第二個參數是數組的大小。
array.size();	array的大小
array.front();	array的第一個元素
array.back();	array的最后一個元素
array.data();	array數組的首地址

array容器的測試代碼

#include<iostream>
#include<array>
#include<ctime>
#include<cstdlib>//using namespace std;const int ASIZE = 50000;void test_array() {cout << "test_array() starting......" << endl;array<long, ASIZE> c ;clock_t timeStart = clock();for (long i = 0; i < ASIZE;++i) {c[i] = rand();}cout << "array數組中插入50000個元素所用時間:" << clock()- timeStart <<endl;cout << "array大小是:" << c.size() << endl;cout << "array中第一個元素是:" << c.front() << endl;cout << "array中最后一個元素是:" << c.back() << endl;cout << "array首地址是:" << c.data() << endl;//設定目標long值long target = get_a_target_long();timeStart = clock();qsort(c.data(),ASIZE,sizeof(long),compareLongs);long* pItem=(long*)bsearch(&target,c.data(), ASIZE, sizeof(long), compareLongs);cout << "qsort和bsearch所用時間:" << clock() - timeStart << endl;if (pItem != NULL)cout << *pItem << "在數組中,已找到!" << endl;elsecout << *pItem << "不在數組中!" << endl;
}
//調用test_array()
int main() {test_array();system("pause");return 0;
}

輸出結果:

test_array() starting......
array數組中插入50000個元素所用時間:8
array大小是:50000
array中第一個元素是:41
array中最后一個元素是:14499
array首地址是:001CF028
target (0~32767):2000
qsort和bsearch所用時間:43
2000在數組中,已找到!

測試代碼中部分函數解析

qsort和bsearch在cstdlib文件中
qsort(容器首地址,容器中元素數量,每一個元素的字節大小,排序方式)
bsearch(查詢內容的地址,容器首地址,容器中元素數量,每一個元素的字節大小,排序方式)

vector 容器

vector容器的空間大小是兩倍兩倍的增長。其中兩倍增長的意思是,當空間大小不夠時,在另一塊空間找到兩倍大小的空間,將數據進行搬移到另一空間,而不是在原有空間的基礎上進行增長。主要原因是因為vector空間連續。

vector<string> c;聲明一個vector,第一參數是元素類型,第二參數是分配器,不寫的話即是默認分配器vector.size() 是真正元素的個數
vector.capacity()是當前空間的大小
vector.push_back()是往vector里放數據以下功能同array:
vector.front()
vector.back()
vector.data()

vector 容器的測試代碼

#include<vector>
#include<algorithm>
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<string>using namespace std;void test_vector(long& targets) {cout << "test_vector() starting......" << endl;vector<string> c;char buf[10];clock_t timeStart = clock();for (long i = 0; i < targets; ++i) {snprintf(buf, 10, "%d", rand());c.push_back(string(buf));}cout << "vector中插入50000個元素所用時間:" << clock() - timeStart << endl;cout << "vector大小是:" << c.size() << endl;cout << "vector容量是:" << c.capacity() << endl;cout << "vector中第一個元素是:" << c.front() << endl;cout << "vector中最后一個元素是:" << c.back() << endl;cout << "vector首地址是:" << c.data() << endl;//設定目標值string target = get_a_target_string();timeStart = clock();auto ite=find(c.begin(),c.end(),target);cout << "find所用時間:" << clock() - timeStart << endl;if (ite != c.end())cout << *ite << "在vector中,已找到!" << endl;elsecout << *ite << "不在vector中!" << endl;timeStart = clock();sort(c.begin(), c.end());string* pItem = 	(string*)bsearch(&target,c.data(),c.size(),sizeof(string),compareStrings);cout << "sort+bsearch所用時間:" << clock()-timeStart<<endl;if (pItem != NULL)cout << *pItem << "在vector中,已找到!" << endl;elsecout << *pItem << "不在vector中!" << endl;
}
//調用test_vector函數
int main() {long targets = 50000;test_vector(targets);system("pause");return 0;
}

輸出結果:

test_vector() starting......
vector中插入50000個元素所用時間:2047
vector大小是:50000
vector容量是:61447
vector中第一個元素是:41
vector中最后一個元素是:14499
vector首地址是:00970060
target (0~32767):1357
find所用時間:18
1357在vector中,已找到!
sort+bsearch所用時間:4094
1357在vector中,已找到!

測試代碼中部分函數解析

首尾迭代器是前閉后開區間的形式

find(首迭代器,尾迭代器,搜尋的目標值)
sort(首迭代器,尾迭代器)
sort(首迭代器,尾迭代器,Compare comp) 其中,comp接受兩個參數,返回bool值,comp是給出比較兩個數的大小關系的方式

list 容器

list是每增加一個元素就增加一個對應大小的空間,其存儲空間是不連續的。空間利用率高,但搜索數據慢。

 list<string>c;	聲明一個list,第一參數是元素類型,第二參數是分配器list.size() 是真正元素的個數list.capacity()是當前空間的大小list.push_back()是往vector里放數據以下功能同array:list.front()list.back()list.data()

list 容器的測試代碼

#include<list>
#include<algorithm>
#include<functional>
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<string>
using namespace std;void test_list(long& targets) {cout << "test_list() starting......" << endl;list<string> c;char buf[10];clock_t timeStart = clock();for (long i = 0; i < targets; ++i) {snprintf(buf, 10, "%d", rand());c.push_back(string(buf));}cout << "list中插入50000個元素所用時間:" << clock() - timeStart << endl;cout << "list大小是:" << c.size() << endl;cout << "list max_size大小是:" << c.max_size() << endl;cout << "list中第一個元素是:" << c.front() << endl;cout << "list中最后一個元素是:" << c.back() << endl;//設定目標值string target = get_a_target_string();timeStart = clock();auto ite = find(c.begin(), c.end(), target);cout << "find所用時間:" << clock() - timeStart << endl;if (ite != c.end())cout << *ite << "在list中,已找到!" << endl;elsecout << *ite << "不在list中!" << endl;timeStart = clock();c.sort();cout << "sort所用時間:" << clock() - timeStart << endl;}
//調用test_list函數
int main() {long targets = 50000;test_list(targets);system("pause");return 0;
}

輸出結果

test_list() starting......
list中插入50000個元素所用時間:840
list大小是:50000
list max_size大小是:119304647
list中第一個元素是:41
list中最后一個元素是:14499
target (0~32767):1234
find所用時間:12
1234在list中,已找到!

測試代碼中部分函數解析

list和 forward_list都有自己的sort函數
c.sort();是容器中的sort函數,不是標準庫中的sort函數,當容器中有sort函數時,優先選擇容器中的sort函數

forward_list 容器

forward_list<string>c;	聲明一個forward_list
forward_list.push_front()	只有push_front()沒有push_back(),即從beginning開始插入數據,比較快,從后面插入數據太慢,
forward_list.front()	首元素,沒有forward_list.back(),沒有forward_list.size()找forward_list里的元素,可用auto pItem=::find(c.begin(),c.end(),target),
::表示全局,即標準庫中的find函數,返回的pItem是一個迭代器

deque 容器

雙向開口,可進可出的連續性存儲空間,但它是分段連續,
即在每一段中是連續的,段與段之間不連續,但在使用過程中,我們會覺得deque是整個連續的
當deque的空間不夠用時,調用push_back時,會再分配一段空間使用deque<string>c; deque的聲明
size(),front(),back(),max_size()函數意義同上找deque里的元素,可用auto pItem=::find(c.begin(),c.end(),target),deque自身沒有sort函數,排序要用全局的sort,即  ::sort(c.begin(),c.end());

在這里插入圖片描述
stack和queue容器沒有新的技術,是使用deque得到的,一般不稱為容器,而是稱為容器適配器(container adapters)。stack和queue不提供迭代器相關操作,因為如果有迭代器相關操作的話,則stack和queue就可以改變其內部的數據,不再符合先進后出和先進先出的特性。

stack 容器

先進后出stack<string>c; stack的聲明
size()
top()	返回最頂部數據,不彈出
pop()	最頂部元素彈出來
push()	元素放進去

queue 容器

先進先出queue<string>c; queue的聲明
size()
front()
back()
pop()	元素彈出來
push()	元素放進去

關聯式容器(Associative Containers)代碼示例

multiset 容器

沒有push_back,沒有push_front
multiset<string>c;
multiset.insert()	插入元素
multiset.size()
multiset.max_size()搜尋某數據,multiset.find()比::find()快

multiset 容器測試代碼

#include<set>
#include<algorithm>
#include<functional>
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<string>using namespace std;void test_multiset(long& targets) {cout << "test_multiset() starting......" << endl;multiset<string> c;char buf[10];clock_t timeStart = clock();for (long i = 0; i < targets; ++i) {snprintf(buf, 10, "%d", rand());c.insert(string(buf));}cout << "multiset中插入50000個元素所用時間:" << clock() - timeStart << endl;cout << "multiset大小是:" << c.size() << endl;cout << "multiset max_size大小是:" << c.max_size() << endl;//設定目標值string target = get_a_target_string();timeStart = clock();auto ite = find(c.begin(), c.end(), target);cout << "find所用時間:" << clock() - timeStart << endl;if (ite != c.end())cout << *ite << "在multiset中,已找到!" << endl;elsecout << *ite << "不在multiset中!" << endl;timeStart = clock();c.find(target);cout << "multiset容器中find所用時間:" << clock() - timeStart << endl;}
//調用test_multiset函數int main() {long targets = 50000;test_multiset(targets);system("pause");return 0;
}

輸出結果,可以看出,容器自帶的find函數快

test_multiset() starting......
multiset中插入50000個元素所用時間:2966
multiset大小是:50000
multiset max_size大小是:97612893
target (0~32767):88
find所用時間:62
88在multiset中,已找到!
multiset容器中sort所用時間:0

multimap 容器

multimap<long,string>c;	聲明multimap
multimap.insert(pair<long,string>(i,buf));	插入key,value
multimap不可用[]做插入操作

multimap 容器測試代碼

#include<map>
#include<algorithm>
#include<functional>
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<string>using namespace std;void test_multimap(long& targets) {cout << "test_multimap() starting......" << endl;multimap<long,string> c;char buf[10];clock_t timeStart = clock();for (long i = 0; i < targets; ++i) {snprintf(buf, 10, "%d", rand());c.insert(pair<long, string>(i,string(buf)));}cout << "multimap中插入50000個元素所用時間:" << clock() - timeStart << endl;cout << "multimap大小是:" << c.size() << endl;cout << "multimap max_size大小是:" << c.max_size() << endl;//設定目標long值long target = get_a_target_long();timeStart = clock();auto pItem=c.find(target);cout << "multimap容器中find所用時間:" << clock() - timeStart << endl;if (pItem != c.end())cout << "key為:" << pItem->first << " 在multimap中已找到,其value為:" << pItem->second << endl;elsecout << "key為:" << pItem->first << " 在multimap中不存在" << endl;}//調用test_multimap函數
int main() {long targets = 50000;test_multimap(targets);system("pause");return 0;
}

輸出結果

test_multimap() starting......
multimap中插入50000個元素所用時間:2760
multimap大小是:50000
multimap max_size大小是:89478485
target (0~32767):30000
multimap容器中find所用時間:0
key為:30000 在multimap中已找到,其value為:8970

unordered_multiset 容器

unordered_multiset 容器底層結構是hashtable,multiset和multimap底層結構是紅黑樹

#include<unordered_set>
unordered_multiset<string> c;c.size()
c.max_size()
c.bucket_count();	bucket的個數
c.load_factor();	載重因子
c.max_load_factor();	最大載重因子為1
c.max_bucket_count();	最大bucket個數
c.bucket_size(i);

unordered_multiset 容器測試代碼

#include<unordered_set>
#include<algorithm>
#include<functional>
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<string>using namespace std;void test_unordered_multiset(long& targets) {cout << "test_unordered_multiset() starting......" << endl;unordered_multiset<string> c;char buf[10];clock_t timeStart = clock();for (long i = 0; i < targets; ++i) {snprintf(buf, 10, "%d", rand());c.insert(string(buf));}cout << "unordered_multiset中插入50000個元素所用時間:" << clock() - timeStart << endl;cout << "unordered_multiset size是:" << c.size() << endl;cout << "unordered_multiset max_size大小是:" << c.max_size() << endl;cout << "unordered_multiset bucket_count()是:" << c.bucket_count() << endl;cout << "unordered_multiset load_factor()是:" << c.load_factor() << endl;cout << "unordered_multiset max_load_factor()是:" << c.max_load_factor() << endl;cout << "unordered_multiset max_bucket_count()是:" << c.max_bucket_count() << endl;for (int i = 0; i < 20;++i) {cout << "bucket # " << i << " has " << c.bucket_size(i) << " elements" << endl;}//設定目標值string target = get_a_target_string();timeStart = clock();auto ite = find(c.begin(), c.end(), target);cout << "find所用時間:" << clock() - timeStart << endl;if (ite != c.end())cout << *ite << "在unordered_multiset中,已找到!" << endl;elsecout << *ite << "不在unordered_multiset中!" << endl;timeStart = clock();c.find(target);cout << "unordered_multiset容器中find所用時間:" << clock() - timeStart << endl;}

輸出結果

test_unordered_multiset() starting......
unordered_multiset中插入50000個元素所用時間:3668
unordered_multiset size是:50000
unordered_multiset max_size大小是:119304647
unordered_multiset bucket_count()是:65536
unordered_multiset load_factor()是:0.762939
unordered_multiset max_load_factor()是:1
unordered_multiset max_bucket_count()是:536870911
bucket # 0 has 0 elements
bucket # 1 has 0 elements
bucket # 2 has 2 elements
bucket # 3 has 0 elements
bucket # 4 has 8 elements
bucket # 5 has 2 elements
bucket # 6 has 0 elements
bucket # 7 has 0 elements
bucket # 8 has 0 elements
bucket # 9 has 0 elements
bucket # 10 has 0 elements
bucket # 11 has 0 elements
bucket # 12 has 0 elements
bucket # 13 has 0 elements
bucket # 14 has 0 elements
bucket # 15 has 0 elements
bucket # 16 has 0 elements
bucket # 17 has 0 elements
bucket # 18 has 0 elements
bucket # 19 has 0 elements
target (0~32767):1357
find所用時間:36
1357在unordered_multiset中,已找到!
unordered_multiset容器中find所用時間:0

unordered_multimap 容器

使用方法同multimap

set容器,map容器

使用方法同multiset,multimap,但是插入數據不重復
map可以用[]插入數據,例 map[key]=value;

unordered_set 容器

unordered_map 容器

底層結構是hashtable,用法同set和map

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446573.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446573.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446573.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

codeforces 318A-C語言解題報告

題目網址 題目 1.一個數先奇數從小到大再偶數從小到大(1–n),問第k個數是什么? 2.舉例發現規律: 第k個數與n的奇偶無關,使用中間數mid(a1)/2;進行判斷,k是奇數還是偶數 奇數:countb*2-1; 偶數:count(b-mid)*2; 3.因為數很大,使用scanf("%lld %lld",&a,&…

C++面試題目

C和C的區別 總覽 C是一個結構化語言&#xff0c;它的重點在于算法和數據結構。C程序的設計首要考慮的是如何通過一個過程&#xff0c;對輸入&#xff08;或環境條件&#xff09;進行運算處理得到輸出&#xff08;或實現過程&#xff08;事務&#xff09;控制&#xff09;。C&…

C++STL與泛型編程(4)OOP(面向對象編程) Vs. GP(泛型編程)

文章目錄OOP和GP為什么list不能使用標準庫中的::sort算法&#xff1f;采用GP的好處OOP和GP OOP將datas和methods關聯在一起 GP將datas和methods分開 為什么list不能使用標準庫中的::sort算法&#xff1f; 因為標準庫的sort的算法用到了隨機訪問迭代器&#xff08;RandomAcce…

codeforces 158B-C語言解題報告

題目網址 題目解析 參考博客 代碼 #include<iostream> #include<string.h> #include<algorithm> #include<stdio.h> #include<math.h> using namespace std; int n,a[100005]; long long sum,s1,s2,s3;main() {cin>>n;for(int i1;i<…

ECC 公鑰加密 使用相同的ECC公鑰對 對 相同的數據進行加密,每次的加密結果是一致的嗎?

ECC 公鑰加密 使用相同的ECC公鑰對 對 相同的數據進行加密&#xff0c;每次的加密結果是一致的嗎&#xff1f;不一致里面包裝了個臨時的點&#xff0c;使用這個增加安全性

C++ primer 第7章 類

成員函數的聲明必須在類的內部&#xff0c;定義則既可以在類的內部&#xff0c;也可以在類的外部。 作為接口組成部分的非成員函數&#xff0c;它們的定義和聲明都在類的外部。 類可以允許其他類或者函數訪問它的非公有成員&#xff0c;方法是令其他類或函數成為它的友元。如果…

codeforces 705A-C語言解題報告

題目網址 題目解析 1.重點:結尾是it,中間使用that連接,所以使用for循環,奇數輸出I hate,偶數輸出I love,i!n時,輸出that 代碼 #include<stdio.h> #include<stdlib.h> #define SIZE 100000 int main() {int n0;scanf("%d",&n);if(n1){printf(&quo…

牛客網 鏈表結構 算法相關內容

鏈表結構 單鏈表的節點結構 由以下結構的節點依次連接起來所形成的鏈叫單鏈表結構 Clas Node<V>{ V value; Node next; } 雙鏈表的節點結構 由以下結構的節點依次連接起來所形成的鏈叫雙鏈表結構 Clas Node<V>{ V value; Node next; Node last; } 單鏈表和雙…

C++ primer 第8章 IO庫

文章目錄IO庫類型和頭文件IO對象無拷貝或賦值IO流的條件狀態文件輸入輸出ifstream 示例ofstream 示例文件模式以out模式打開文件會丟棄已有數據每次調用open時都會確定文件模式ofstream 保留源文件 追加數據 示例string流istringstream示例ostringstream示例IO庫類型和頭文件 …

codeforces 486A-C語言解題報告

題目網址 題目解析 1.f(n)(-1)^nn 2.使用long long int 3.總結找出規律: if(i%2!0) return -1(i1)/2; else return i/2; 直接暴力求解—超時 #include<stdio.h> #include<stdlib.h> // TIME_LIMIT_EXCEEDED,此方法不行,超時 //注意規律&#xff01;&#xff01…

C++面試寶典 基本語言(三)

如果同時定義了兩個函數&#xff0c;一個帶const&#xff0c;一個不帶&#xff0c;會有問題嗎&#xff1f; 不會&#xff0c;這相當于函數的重載 #include<iostream> class A{ public:void print()const{std::cout << "Hello" << std::endl;}void…

C++ primer 第9章 順序容器

文章目錄順序容器類型確定使用哪種順序容器容器庫概覽容器操作迭代器迭代器支持的所有操作迭代器支持的所有運算迭代器范圍對構成范圍的迭代器的要求標準庫迭代器范圍左閉右開的三種性質容器定義和初始化將一個新容器創建為另一個容器的拷貝將array拷貝到vector中的代碼與順序容…

常用單位換算

字節單位換算 B(byte)字節 bit 位 1B 8 bit 1KB&#xff08;Kilobyte&#xff0c;千字節&#xff09;1024B 2^10 B&#xff1b; 1MB&#xff08;Megabyte&#xff0c;兆字節&#xff0c;百萬字節&#xff0c;簡稱“兆”&#xff09;1024KB 2^20 B&#xff1b; 1GB&#xf…

牛客網C++面經 容器和算法

原文網址 參考網址 C語言中文網 請你來說一下map和set有什么區別&#xff0c;分別又是怎么實現的&#xff1f; map和set都是C的關聯容器&#xff0c;其底層實現都是紅黑樹&#xff08;RB-Tree&#xff09;。由于 map 和set所開放的各種操作接口&#xff0c;RB-tree 也都提供…

C語言指針-字符指針整型指針char*s int*a

案例代碼 #include<stdio.h> #include<stdlib.h> #include<string.h> int main() {//字符指針char *pstr"good dog ww";printf("字符指針指向的字符串內容:%s\n",pstr);printf("字符指針本身的地址:%p\n",&pstr);printf…

C++ primer 第10章 泛型算法

文章目錄概述findcount初識泛型算法只讀算法只讀算法accumulate只讀算法equal寫容器元素的算法算法fill算法fill_nback_inserter算法copy算法replace replace_copy重排容器元素的算法sortuniqueunique_copy定制操作向算法傳遞函數謂詞算法stable_sort算法partitionlambda表達式…

C語言常用字符串函數

概括 代碼 #include<stdlib.h> #include<stdio.h> #include<string.h> int main() {//常用字符串函數char a[]"abcSDFbnm";char b[]"SD";printf("a的字符串長度:%d\n",strlen(a));printf("b的字符串長度:%d\n",str…

C++ primer 第11章 關聯容器

文章目錄使用關聯容器map示例關聯容器概述定義關聯容器關聯容器值初始化multimap和multiset關鍵字類型的要求pair類型pair上的操作關聯容器操作關聯容器額外的類型別名關聯容器迭代器map迭代器set迭代器關聯容器和算法添加元素向map添加元素檢測insert的返回值使用insert代替下…

C++ primer 第12章 動態內存

文章目錄前言動態內存與智能指針shared_ptr類shared_ptr和unique_ptr都支持的操作shared_ptr獨有的操作make_shared 函數shared_ptr的拷貝和賦值shared_ptr自動銷毀所管理的對象shared_ptr還會自動釋放相關聯的內存程序使用動態內存出于以下原因直接管理內存使用new動態分配和初…

C語言順序查找二分查找

介紹 順序查找 按照順序一個個查找 #include<stdio.h> //順序查找 int search(int arr[],int len,int aim) {int i;for(i0;i<len;i){if(arr[i]aim){return i;//返回下標 }}return -1;//表示未查詢到} int main() {int arr[]{13,355,256,65,234,-1,35,-6,-3,-4,0};…