如何解决如何使用基于范围的循环将向量的元素打印为有序列表
例如:
vector<string> myVec = {apple,banana,grape}
如何使用基于范围的循环将这些元素打印为有序列表
输出:
1 apple
2 banana
3 grape
解决方法
杰弗里答案的变体,但没有其他变量:
for (const auto& s : myVec)
{
std::cout << &s - &myVec[0] << " " << s << "\n";
}
这当然会打印“正确的”基于0的索引。随时向其中添加1
:)
使用提升范围确实简化了Live Demo
using namespace boost::adaptors;
std::vector<std::string> myVec = {"apple","banana","grape"};
for (const auto& element : myVec | indexed(1))
{
std::cout << element.index() << " " << element.value() << "\n";
}
生产
1 apple
2 banana
3 grape
,
您正在寻找
size_t position = 1;
for(const auto& s: myVec)
{
std::cout << position << " " << s << "\n";
position++;
}
与
相同#include <iostream>
#include <string>
#include <vector>
using std::vector;
using std::string;
vector<string> myVec = {"apple","grape"};
int main()
{
size_t position = 1;
for(const auto& s: myVec)
{
std::cout << position << " " << s << "\n";
position++;
}
}
,
使用range-v3,您可以编写:
for (auto [i,val] : myVec | ranges::views::enumerate)
{
std::cout << i << ' ' << val << "\n";
}
这里是demo。
,这对于原始的for
循环来说是个好问题:
const size_t quantity = myVec.size();
for (unsigned int i = 0; i < quantity; ++i)
{
cout << (i + 1) << " " << myVec[i] << "\n";
}
简单,有效。不要敲旧东西。 :-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。