我正在制作一个解决此问题的程序:http: //opc.iarcs.org.in/index.php/problems/BOOKLIST
我使用向量的唯一地方是:
for(int i =0;i < total_books; i++){
int temp;
cin >> temp;
books_order.push_back(temp);
}
和
for(int i = 0;i < total_entries; i++){
int index;
cin >> index;
index--;
cout << books_order[index] << endl;
books_order.erase(books_order.begin()+index);
}
(这是我的完整代码:http ://cpaste.org/1377/ )
我从向量中使用的唯一函数是vector::erase、vector::push_back 和vector::begin。对于大型输入,我的代码花费的时间超过 3 秒(这是该问题的时间限制),但是当我删除向量函数时,它运行得更快(但当然给出了错误的答案)
我知道在这个问题中使用向量是错误的,而且我的算法很慢,但我不明白为什么它很慢。
如果您知道为什么我使用的功能很慢,请向我解释。谢谢你。