この単純なコードを作成して、ベクトルの要素を削除およびソートしました。私はそれを何度もチェックしていますが、ソートと削除のアルゴリズムはどちらも個別に実行すると正しいですが、要素を削除してからベクトルを降順で並べ替えると問題があります。プログラムはゴミを '0'私が昇順で並べ替えるとうまくいきます。 ご協力いただければ幸いです。ありがとうございました。 は、ここでは、あなたの並べ替え一部とoff-by-oneエラーを持っているプログラム1C++でベクトルの要素を削除およびソートする
#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