【问题标题】:std::sort in vector<int> returns 0 instead of the values [duplicate]std::sort in vector<int> 返回 0 而不是值 [重复]
【发布时间】:2019-03-08 16:19:17
【问题描述】:

我在 HackerRank 中做一个简单的练习,在一个向量中获取一些整数,然后将它们排序在屏幕上。

int main() {
    int sz;
    std::cin >> sz; // 5 in this case

    std::vector<int> v(sz);
    for(auto elem : v){
        std::cin >> elem;
        std::cout << elem << ' '; //1 6 10 8 4
    }
    std::cout << std::endl;

    std::sort(v.begin(), v.end());

    for (auto elem : v) {
        std::cout << elem << ' '; //0 0 0 0 0 
    }
    return 0;
}

输出是:

1 6 10 8 4 
0 0 0 0 0 

std::sort 还有什么需要考虑的吗?是不是 HackerRank 的编译器有问题?

【问题讨论】:

    标签: c++


    【解决方案1】:

    elem 是您矢量中项目的副本!将其更改为参考,以便在读取值时实际修改向量:

    for(auto &elem : v){
    //      ^^^
        std::cin >> elem;
        std::cout << elem << ' '; //1 6 10 8 4
    }
    

    在这里查看它的工作原理:ideone

    【讨论】:

    • 是的,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-10-09
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多