C++打印 vector的幾種方法小結(jié)
1. 使用迭代器
std::vector<char> path;
for (std::vector<char>::const_iterator i = path.begin(); i != path.end(); ++1) {
std::cout << *i << ' ';
}
如果想要在循環(huán)的同時(shí)能夠修改 vector,那么可以使用 iterator 代替 const_iterator。
2. 使用 auto (C++11) / typedef / type alias (C++11)
這是方法 1 的補(bǔ)充。如果你使用 C++11,那么你可以使用 auto 關(guān)鍵字來(lái)增加可讀性:
for (auto i = path.begin(); i != path.end(); i++) {
std::cout << *i << ' ';
}
不過(guò),上面的寫(xiě)法使用 auto 關(guān)鍵字時(shí),編譯器會(huì)返回可變的 std::vector<char>::iterator。
你也可以用 typedef 來(lái)增加可讀性:
typedef std::vector<char> Path;
Path path;
for (Path::const_iterator i = path.begin(); i != path.end(); i++) {
std::cout << *i << ' ';
}
3. 計(jì)數(shù)器
還可以向傳統(tǒng)的寫(xiě)法一樣,使用一個(gè)計(jì)數(shù)器來(lái)遍歷:
for (int i = 0; i < path.size(); i++)
std::cout << apth[i] << ' ';
但是像這種使用計(jì)數(shù)器的寫(xiě)法中,最好使用容器自己的成員類型。比如 std::vector 就有一個(gè)類型 size_type:它表示方法 size 返回值得類型。
for (Path::size_type i = 0; i < path.size(); i++)
std::cout << path[i] << ' ';
4. range-base 循環(huán)
在 C++11 及之后可以使用新的基于范圍的循環(huán):
for (auto i : path)
std::cout << i << ' ';
path 是 vector<char> 類型,上面循環(huán)中的 i 實(shí)際上是 path 中每一項(xiàng)的拷貝(似乎在 C++ 中默認(rèn)所有的賦值都是拷貝),所以在循環(huán)中對(duì) i 的修改不會(huì)反應(yīng)到 path 中。
你可能在循環(huán)中希望 i 是不可變的,那么可以申明 i 為 const:
for (const auto i : path)
std::cout << i << ' ';
同樣,你可能希望在循環(huán)中對(duì) i 做一些操作,那么可以聲明 i 為引用類型:
for (const auto& i : path)
std::cout << i << ' ';
5. 重載操作符 <<
#include <iterator> // for std::ostream_iterator
#include <algorithm> // for std::copy
template <typename T>
std::ostream& operator<< (std::ostream& out, const std::vector<T>& v) {
if (!v.empty()) {
out << '[';
std::copy(v.begin(), v.end(), std::ostream_iterator<T>(out, ", "));
out << "\b\b]";
}
return out;
}
上面的 \b 是退格,將最后一個(gè)元素的 , 給退掉。
到此這篇關(guān)于C++打印 vector的幾種方法小結(jié)的文章就介紹到這了,更多相關(guān)C++打印vector 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Matlab實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)顯示方法
這篇文章主要為大家詳細(xì)介紹了Matlab使用Plot函數(shù)實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)顯示方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
Matlab實(shí)現(xiàn)繪制立體玫瑰花的示例代碼
這篇文章主要介紹了如何利用Matlab實(shí)現(xiàn)繪制更立體的玫瑰花,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定的幫助,需要的可以參考一下2023-02-02
C語(yǔ)言實(shí)現(xiàn)的PNPoly算法代碼例子
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)的PNPoly算法代碼例子,PNPoly算法j是判斷一個(gè)坐標(biāo)點(diǎn)是否在不規(guī)則多邊形內(nèi)部的算法,需要的朋友可以參考下2014-07-07
C語(yǔ)言實(shí)現(xiàn)多線程定時(shí)器實(shí)例講解
在本篇文章里小編給各位分享的是一篇關(guān)于C語(yǔ)言實(shí)現(xiàn)多線程定時(shí)器實(shí)例講解內(nèi)容,有需要的朋友們可以參考學(xué)習(xí)下。2021-01-01
詳解C++?functional庫(kù)中的仿函數(shù)使用方法
仿函數(shù)(functor)又稱之為函數(shù)對(duì)象(function?object),實(shí)際上就是?重載了()操作符?的?struct或class。本文將詳細(xì)講解C++中仿函數(shù)的使用方法,需要的可以參考一下2022-04-04

