[英]return top 5 value using vector iterator
大家好,有什么方法可以使用向量迭代器返回向量中的前5個元素嗎?
在此示例中,我將僅獲得向量本身中的所有值。
// vector::begin/end
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myvector;
for (int i=1; i<=10; i++) myvector.push_back(i);
std::cout << "myvector contains:";
for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); ++it)
std::cout << ' ' << *it;
std::cout << '\n';
return 0;
}
嗯,感謝您的所有迅速答復。但是,當我嘗試將它們放入函數中時,為什么會出現編譯錯誤?
void Test::topfives()
{
topfive.assign( point1.begin(), point1.end() );
sort(topfive.begin(), topfive.end(), sortByCiv);
}
void Test::DisplayTopFiveResult()
{
test.topfives();
copy(topfive.begin(), topfive.begin()+ min(topfive.size(), (size_t )5),
ostream_iterator<Level>(cout << level.displayClassresult()));
}
將myvector.begin()
前進5
std::copy(myvector.begin(),
myvector.begin()+std::min(myvector.size(), (size_t)5),
std::ostream_iterator<int>(std::cout,"\n"));
這從myvector
最多打印前5個元素
看這里
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myvector;
for (int i=1; i<=10; i++) myvector.push_back(i);
std::cout << "myvector contains:";
std::vector<int>::iterator it = myvector.begin()
for (int i = 0; i < 5 && it != myvector.end(); i++) {
std::cout << ' ' << *it;
++it;
}
std::cout << '\n';
return 0;
}
std :: vector支持隨機訪問迭代器 ,這意味着您可以執行以下操作:
myvector.begin() + 5
因此,您的代碼有兩個選擇:
std::cout << "myvector contains:";
size_t maxElements = std::min(myvector.size(), size_t(5));
for (size_t i = 0; i < numElements; ++i) {
std::cout << ' ' << myvector[i];
要么
auto startIt = myvector.begin();
auto endIt = myvector.begin() + 5;
for (auto it = startIt; it != endIt; ++it)
std::cout << ' ' << *it;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.