class Print
{
public:
void PrintAll() {}
private:
std::list<int> mylist;
};
我從C++語言書中看到這個示例問題。 而我想打印內部mylist元素。 如果需要顛倒mylist,使用C++ STL庫並使用輸出結果,該怎麼辦?顛倒std :: list的內容
非常感謝!
class Print
{
public:
void PrintAll() {}
private:
std::list<int> mylist;
};
我從C++語言書中看到這個示例問題。 而我想打印內部mylist元素。 如果需要顛倒mylist,使用C++ STL庫並使用輸出結果,該怎麼辦?顛倒std :: list的內容
非常感謝!
這就是說,如果你只需要打印的list
在倒車時,你可以使用list
的反向迭代器(由std::list<>::rbegin()
和std::list<>::rend()
獲得)而不是使用list
的正常迭代器只是打印出來。例如:
// given std::list<int> l;
for (std::list<int>::const_reverse_iterator iter(l.rbegin()), iter_end(l.rend());
iter != iter_end;
++iter)
{
std::cout << *iter << '\n';
}
'std :: copy(l.rbegin(),l.rend(),std :: ostream_iterator
您可以在列表中使用reverse()
方法。
mylist.reverse();
將顛倒你的列表的內容,然後你可以使用迭代器打印相同的內容。
list<int>::iterator it;
cout << "mylist contains:";
for (it=mylist.begin(); it!=mylist.end(); ++it)
cout << " " << *it;
您可以將所有功能包裝在自己的成員函數中。
您還可以使用容器提供的反向迭代器,例如, l.rbegin()和l.rend(),它們將向後遍歷列表。
碼例如用於一覽::反向
// list_reverse.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main()
{
using namespace std;
list <int> c1;
list <int>::iterator c1_Iter;
c1.push_back(10);
c1.push_back(20);
c1.push_back(30);
cout << "c1 =";
for (c1_Iter = c1.begin(); c1_Iter != c1.end(); c1_Iter++)
cout << " " << *c1_Iter;
cout << endl;
c1.reverse();
cout << "Reversed c1 =";
for (c1_Iter = c1.begin(); c1_Iter != c1.end(); c1_Iter++)
cout << " " << *c1_Iter;
cout << endl;
}
而輸出將是
C1 = 10 20 30 反相C1 = 30 20 10
迭代器簡單地點到列表中的當前元素。所以,如果我們編寫一個從頭到尾的for循環,我們可以反向打印列表。在下面給出的代碼:
#include <iostream>
#include <list>
using namespace std;
int main()
{
std::list<int> ii;
ii.push_back(1);
ii.push_back(2);
ii.push_back(3);
ii.push_back(4);
ii.push_back(5);
for (std::list<int>::iterator it = (ii.begin()); it != (ii.end()) ; ++it)
{
cout << (*it) << " ";
}
cout << endl;
for (std::list<int>::iterator it = (--ii.end()); it != (--ii.begin()) ; it--)
{
cout << (*it) << " ";
}
return 0;
}
從前面的第一個for循環打印出該列表,而第二個打印到後從後到前。
請添加PrintAll()的代碼 – 2011-04-13 06:32:35