我已經制作了這個簡單的代碼來刪除和排序向量的元素。我已經檢查過很多次,當我單獨運行它們時,排序和刪除算法都是正確的,但是存在一個問題,當我刪除一個元素然後按降序對該向量排序時,程序將一個垃圾值設置爲'0'索引,但如果按升序排序,則工作正常。 任何幫助,將不勝感激。謝謝。 這裏是程序1在C++中刪除和排序向量的元素
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
bool flag = 1;
int size = 5,delind;
vector <int> v1;
v1.resize(size);
for(int i = 0; i<size; i++)
{
cout<<"\nenter a no. ";
cin>>v1[i];
}
// index of the element to be deleted
cout << "\nEnter the index of no. to delete: ";
cin >> delind;
for(int i = delind; i < size; i++)
{
v1[i] = v1[i+1];
}
--size;
v1.erase(v1.begin()+size);
for(int i =0; i < size; i++)
{
cout << endl << endl << v1[i];
}
cout << "\n sorting";
// sorting
while (flag == 1)
{
flag = 0;
for(int i = 0; i < size; i++)
{
if(v1[i] < v1[i+1]) // works fine with if(v1[i]>v1[i+1])
{
flag = 1;
swap(v1[i],v1[i+1]);
}
}
}
for(int i = 0; i < size; i++)
{
cout << endl << endl << v1[i];
}
return 0;
}
你可能只是做'v1.erase(v.begin()+ delind); std :: sort(v.begin(),v.end());' – Jarod42
請編輯您的帖子,其中包含調試會話的詳細信息,例如哪些語句提供了問題以及語句使用的變量值。同時陳述預期的和實際的價值/行爲。 –
@ Jarod42我懷疑這是一個練習,學習如何遍歷向量。使用庫函數不能實現這一點。很難想出適合圖書館尚未實施的教學法的玩具問題。 – Barmar