我想只打印前10个插入的项目,而其余的则留下。我必须使用什么代码(而不是使用myset.end()
)只打印前10个整数而不是打印每个整数。
int main ()
{
std::set<int> myset;
std::set<int>::iterator it;
// set some initial values:
for (int i=1; i<=20; ++i)
myset.insert(i*10);
std::cout << "myset contains:";
for (it=myset.begin(); it!=myset.end(); ++it)
std::cout << *it << ' ';
std::cout << "\n\n";
return 0;
}
答案 0 :(得分:8)
您可以使用std::next
,如下所示:
const auto begin = myset.begin();
const auto end = myset.size() < 10 ? myset.end() : std::next(begin, 10);
for (auto it = begin; it != end; ++it) {
std::cout << *it << ' ';
}
答案 1 :(得分:1)
你可以保留一个count
变量,并在它达到10或你达到myset.end()
后立即中断。
int main ()
{
std::set<int> myset;
std::set<int>::iterator it;
// set some initial values:
for (int i=1; i<=20; ++i)
myset.insert(i*10);
int count = 0;
std::cout << "myset contains:";
for (it=myset.begin(); count < 10 && it!=myset.end(); ++it, ++count)
std::cout << *it << ' ';
std::cout << "\n\n";
return 0;
}
答案 2 :(得分:1)
我会这样做:
int nCount = 0;
for (it=myset.begin(); nCount<10 && it!=myset.end(); ++nCount, ++it)
{
std::cout << *it << ' ';
}
希望这有帮助。