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)的同時能夠修改 vector,那么可以使用 iterator 代替 const_iterator。
2. 使用 auto (C++11) / typedef / type alias (C++11)
這是方法 1 的補充。如果你使用 C++11,那么你可以使用 auto 關(guān)鍵字來增加可讀性:
for (auto i = path.begin(); i != path.end(); i++) {
std::cout << *i << ' ';
}
不過,上面的寫法使用 auto 關(guān)鍵字時,編譯器會返回可變的 std::vector<char>::iterator。
你也可以用 typedef 來增加可讀性:
typedef std::vector<char> Path;
Path path;
for (Path::const_iterator i = path.begin(); i != path.end(); i++) {
std::cout << *i << ' ';
}
3. 計數(shù)器
還可以向傳統(tǒng)的寫法一樣,使用一個計數(shù)器來遍歷:
for (int i = 0; i < path.size(); i++)
std::cout << apth[i] << ' ';
但是像這種使用計數(shù)器的寫法中,最好使用容器自己的成員類型。比如 std::vector 就有一個類型 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 實際上是 path 中每一項的拷貝(似乎在 C++ 中默認(rèn)所有的賦值都是拷貝),所以在循環(huán)中對 i 的修改不會反應(yīng)到 path 中。
你可能在循環(huán)中希望 i 是不可變的,那么可以申明 i 為 const:
for (const auto i : path)
std::cout << i << ' ';
同樣,你可能希望在循環(huán)中對 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 是退格,將最后一個元素的 , 給退掉。
到此這篇關(guān)于C++打印 vector的幾種方法小結(jié)的文章就介紹到這了,更多相關(guān)C++打印vector 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言修煉之路悟徹數(shù)組真妙理?巧用下標(biāo)破萬敵上篇
在C語言和C++等語言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來指向若干個字符串,使字符串處理更加方便、靈活2022-02-02
C語言模式實現(xiàn)C++繼承和多態(tài)的實例代碼
本篇文章主要介紹了C語言模式實現(xiàn)C++繼承和多態(tài)的實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
C語言動態(tài)分配二維字符串?dāng)?shù)組的方法
小編最近忙里偷閑,給大家整理一份教程關(guān)于C語言動態(tài)分配二維字符串?dāng)?shù)組的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-10-10
C語言驅(qū)動開發(fā)之內(nèi)核解鎖與強刪文件
在某些時候我們的系統(tǒng)中會出現(xiàn)一些無法被正常刪除的文件,如果想要強制刪除則需要在驅(qū)動層面對其進行解鎖后才可刪掉,本文為大家介紹了內(nèi)核解鎖與強刪文件的方法,希望對大家有所幫助2023-06-06
C++統(tǒng)計函數(shù)執(zhí)行時間的最佳實踐
在軟件開發(fā)過程中,性能分析是優(yōu)化程序的重要環(huán)節(jié),了解函數(shù)的執(zhí)行時間分布對于識別性能瓶頸至關(guān)重要,本文將分享一個C++函數(shù)執(zhí)行時間統(tǒng)計工具,希望對大家有所幫助2025-09-09

