我想知道是否可以直接在文件中对某些数字执行操作,而无需
需要阅读它们。我编写此代码是为了检查文件是否已排序,但我必须读取它们
首先进入一个 vector ,然后检查 vector 是否已排序,但后来我发现这是
代码可能效率低下,因为我必须执行一些额外的步骤。这是代码:
//检查数字是否已排序的方法:
bool number_sorted(vector <int> vector){
bool is_sorted = true;
for(int i = 0; i < vector.size(); i++){
for(int j = i + 1; j < vector.size(); j++){
if(vector[i] > vector[j]){
is_sorted = false;
cout << vector[i] << " and " << vector[j] << " are in the wrong order" << endl;
}
}
}
return is_sorted;
}
//对数字进行排序的方法:
vector <int> sort(vector <int> vector){
for(int i = 0; i < vector.size(); i++){
for(int j = i + 1; j < vector.size(); j++){
if(vector[i] > vector[j]){
int temp = vector[i];
vector[i] = vector[j];
vector[j] = temp;
}
}
}
return vector;
}
//主要方法:
int main(){
vector <int> list;
fstream fs;
fs.open("/Users/brah79/Downloads/skola/c++/inlämningsuppgiter/number1.txt");
bool is_sorted = number_sorted(list);
if(is_sorted){
cout << "the list of numbers is sorted" << endl;
}
else{
sort(list);
}
正如你所看到的,一切都是首先在 vector 上执行的,但我想进行检查和
直接对文件进行排序。希望我说清楚了
最佳答案
你必须读取文件,没有其他方法。
但您不必将所有内容都保存在 vector
bool areIntsInStreamSorted(std::istream& in)
{
return std::is_sorted(std::istream_iterator<int>{in}, {}) && in.eof();
}
bool areIntsInFileSorted(std::filesystem::path p)
{
std::ifstream in{p};
return areIntsInStreamSorted(in);
}
关于c++ - 是否可以循环遍历文件中的一些数字并检查它们是否已排序,而不需要将它们读入 vector 然后检查 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74600377/