c++ - 是否可以循环遍历文件中的一些数字并检查它们是否已排序,而不需要将它们读入 vector 然后检查 vector

标签 c++ file sorting

我想知道是否可以直接在文件中对某些数字执行操作,而无需

需要阅读它们。我编写此代码是为了检查文件是否已排序,但我必须读取它们

首先进入一个 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/

相关文章:

c++ - 将十六进制字节发送到串行端口

c - 为什么我使用 fputc 编写的文件不会终止?

perl - 删除给定目录中的子目录和文件

algorithm - 对 n 个值进行排序所需的比较次数?

arrays - 对ArrayController的内容进行排序

c++ - 如何将 std::vector<myClass*> 转换为 std::vector<const myClass* const>?

c++ - 在 gdb 中跟踪对类实例/内存范围的写访问

Windows/Unix 服务器上的 JAVa IO 限制导致应用程序出现未知问题

java - 我正在尝试将两个一维数组交织成一个新数组

c++ - 处理函数中抛出的异常