c++ - 向量中的 std::sort返回 0 而不是值
问题描述
我在 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 的编译器有问题吗?
解决方案
elem
是矢量中项目的副本!将其更改为参考,以便在读取值时实际修改向量:
for(auto &elem : v){
// ^^^
std::cin >> elem;
std::cout << elem << ' '; //1 6 10 8 4
}
在这里看到它的工作:ideone
推荐阅读
- python-3.x - 使用python设置默认打印机自定义页面大小
- python - 如何在 pylint 中启用打印语句捕获?
- exit - 邓肯郊区总统超支?
- python-3.x - 如何捕获异常并用作普通变量?
- python - 如何使 QFileDialog.AnyFile 工作?
- javascript - 我无法包装 FlatList,它使 FlatList 的高度超过了包装器
- graphviz - 如何将子图与另一个子图的底部对齐?
- python - “DataFrame 的真值是模棱两可的”——这是什么意思?
- sql-server - T-SQL XML - 存在任何元素
- python - Python 嵌套列表,所有组合