我正在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的编译器有问题吗?
答案 0 :(得分:6)
elem
是引导程序中项目的副本!将其更改为参考,以便在读取值时实际上将修改矢量:
for(auto &elem : v){
// ^^^
std::cin >> elem;
std::cout << elem << ' '; //1 6 10 8 4
}
在此处查看其工作原理:ideone