对于面试的人来说, 基本上会用到的就下面几种数据结构, 如果可以使用STL的话就使用下面几种: stack, priority_queue, queue, vector, list, set, map, unordered_map
主要操作: push, top, pop
#include
using namespace std;
int main(){
stack s;
s.push(1);
int top = s.top();
s.pop();
}
主要操作, push, top, pop
#include
#include
using namespace std;
int main(){
priority_queue maxHeap;
priority_queue, greater > minHeap;
maxHeap.push(1);
maxHeap.push(2);
int top = maxHeap.top();
printf("%d", top);
maxHeap.pop();
}
主要操作, push, top, pop
#include
#include
using namespace std;
int main(){
queue q;
q.push(1);
int front = q.front();
q.pop();
}
主要操作, push_back, reserve, [], erase
#include
#include
using namespace std;
int main(){
vector arr;
arr.reserve(100);
arr.push_back(1);
for (auto &&val : arr) {
printf("%d\t", val);
}
}
主要操作, push_back, insert, erase
#include
#include
using namespace std;
int main(){
list linklist;
linklist.push_back(1);
linklist.insert(++linklist.begin(), 2);
for (auto &&item : linklist) {
printf("%d\t", item);
}
linklist.erase(linklist.begin());
}
主要操作, insert, erase, find
#include
#include
using namespace std;
int main(){
set s;
s.insert(1);
s.insert(1);
s.insert(s.begin(), 2);
for (auto &&item : s) {
printf("%d\t", item);
}
s.erase(s.begin());
set::iterator iter = s.find(2);
printf("%d", *iter);
}
主要操作: insert, [], find, erase
#include
主要操作: insert, [], find, erase
#include
#include
#include
#include
using namespace std;
int main(){
unordered_map m;
m.insert(make_pair("wesley", 100));
printf("%d\n", m["wesley"]);
unordered_map::iterator iter;
iter = m.find("wesley");
if (iter != m.end()){
printf("name: %s, grade: %d\n", (iter->first).c_str(), iter->second);
}
m.erase("wesley");
}