在 C++ 編程中選擇合適的數(shù)據(jù)結(jié)構(gòu)取決于您要解決的問(wèn)題和所需操作的效率。以下是一些建議:
#include <iostream>
#include <array>
int main() {
std::array<int, 5> numbers = {1, 2, 3, 4, 5};
for (const auto &number : numbers) {
std::cout << number << " ";
}
return 0;
}
#include <iostream>
struct Node {
int data;
Node *next;
};
int main() {
Node *head = new Node{1, nullptr};
head->next = new Node{2, nullptr};
head->next->next = new Node{3, nullptr};
Node *current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
return 0;
}
#include <iostream>
#include <stack>
int main() {
std::stack<int> numbers;
numbers.push(1);
numbers.push(2);
numbers.push(3);
while (!numbers.empty()) {
std::cout << numbers.top() << " ";
numbers.pop();
}
return 0;
}
#include <iostream>
#include <queue>
int main() {
std::queue<int> numbers;
numbers.push(1);
numbers.push(2);
numbers.push(3);
while (!numbers.empty()) {
std::cout << numbers.front() << " ";
numbers.pop();
}
return 0;
}
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> ages = {{"Alice", 30}, {"Bob", 25}, {"Charlie", 35}};
for (const auto &entry : ages) {
std::cout << entry.first << ": " << entry.second << std::endl;
}
return 0;
}
樹(shù)(Tree):當(dāng)您需要對(duì)數(shù)據(jù)進(jìn)行分層排序或查找時(shí),請(qǐng)選擇樹(shù)。常見(jiàn)的樹(shù)結(jié)構(gòu)有二叉搜索樹(shù)(BST)、平衡二叉樹(shù)(如 AVL 樹(shù)或紅黑樹(shù))和 B 樹(shù)等。
圖(Graph):當(dāng)您需要表示和處理復(fù)雜的關(guān)系網(wǎng)絡(luò)時(shí),請(qǐng)選擇圖。圖可以表示實(shí)體之間的連接關(guān)系,如社交網(wǎng)絡(luò)、交通網(wǎng)絡(luò)等。圖通常使用鄰接矩陣或鄰接表來(lái)表示。
在選擇數(shù)據(jù)結(jié)構(gòu)時(shí),請(qǐng)考慮以下因素: