C++ vector知識點、cout輸出bool格式與int格式轉換
一、vector 的初始化:可以有五種方式,舉例說明如下
(1) vector<int> a(10); //定義了10個整型元素的向量(尖括號中為元素型別名,它可以是任何合法的資料型別),但沒有給出初值,其值是不確定的。 (2)vector<int> a(10,1); //定義了10個整型元素的向量,且給出每個元素的初值為1 (3)vector<int> a(b); //用b向量來建立a向量,整體複製性賦值(隨後當b中值改變,a中的值不改變) (4)vector<int> a(b.begin(),b.begin()+3); //定義了a值為b中第0個到第2個(共3個)元素 (5)int b[7]={1,2,3,4,5,9,8}; vector<int> a(b,b+7); //從陣列中獲得初值
測試程式碼:
#include<iostream> #include<vector> using namespace std; int main() { vector<int> v1(10,2), v2(8,8), v3(v1), v4(v2),v5(v1.begin(),v1.begin()+4); int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; vector<int> v6(a + 4, a + 6); for (int i = 0; i < v1.size(); i++){ cout << v1[i]; } cout << endl; cout << "----------v1-----------" << endl; for (int i = 0; i < v2.size(); i++){ cout << v2[i]; } cout << endl; cout << "----------v2-----------" << endl; for (int i = 0; i < v3.size(); i++){ cout << v3[i]; } cout << endl; cout << "------v1----v3-----------" << endl; for (int i = 0; i < v4.size(); i++){ cout << v4[i]; } cout << endl; cout << "-------v2----v4----------" << endl; for (int i = 0; i < v5.size(); i++){ cout << v5[i]; } cout << endl; cout << "------v1 0 1 2 3------v5---------" << endl; for (int i = 0; i < v6.size(); i++){ cout << v6[i]; } cout << endl; cout << "------------v6---------" << endl; v1[0] = 0; v1[1] = 1; v1[3] = 3; for (int i = 0; i < v1.size(); i++){ cout << v1[i]; } cout << endl; cout << "----------v1-change----------" << endl; for (int i = 0; i < v3.size(); i++){ cout << v3[i]; } cout << endl; cout << "----------v3---No change--------" << endl; for (int i = 0; i < v5.size(); i++){ cout << v5[i]; } cout << endl; cout << "------------v5---No change------" << endl; system("pause"); return 0; }
結果:
二、vector物件的幾個重要操作,舉例說明如下:(裡面包括cout輸出bool格式與int格式轉換,程式碼最後)
#include<iostream> #include<vector> using namespace std; int main() { vector<int> v1(10,2), v2(8,8), v3(v1), v4(v2),v5(v1.begin(),v1.begin()+4); int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; v1[0] = 0; v1[1] = 1; v1[3] = 3; v1[8] = 8; v1[9] = 120; for (int i = 0; i < v1.size(); i++){ cout << v1[i] << endl; } cout << "----------v1-change----------" << endl; //0 1 2 3 2 2 2 2 8 120 cout << v1.front() << " " << v1.back() << endl; //v1.front();返回v1的第一個元素 v1.back(); 返回v1的最後一個元素 0 120 v1.pop_back(); // //刪除a向量的最後一個元素 120 cout << v1.front() << " " << v1.back() << endl; //0 8 v1.erase(v1.begin() + 1, v1.begin() + 3); //刪除第一個元素後面,第三個元素後面的前面的值 for (int i = 0; i < v1.size(); i++){ cout << v1[i] << endl; } cout << "----------v1-change----------" << endl; //結果 0 (1 2) 3 2 2 2 2 8 v1.push_back(111); //在v1的最後一個向量後插入一個元素,其值為111 for (int i = 0; i < v1.size(); i++){ cout << v1[i] << endl; } cout << "----------v1-change----------" << endl; //結果 0 3 2 2 2 2 8 111 v1.insert(v1.begin() + 1, 5); //在v1的第1個元素後面的位置插入數值5,如v1為0 3 2 2 2 2 8 111,插入元素後為0 5 3 2 2 2 2 8 111 for (int i = 0; i < v1.size(); i++){ cout << v1[i] << endl; } cout << "----------v1-change----------" << endl; v1.insert(v1.begin() + 1, 3, 4); //在v1的第1個元素後面的位置插入3個數值4,如v1為0 5 3 2 2 2 2 8 111,插入元素後為0 4 4 4 5 3 2 2 2 2 8 111 for (int i = 0; i < v1.size(); i++){ cout << v1[i] << endl; } cout << "----------v1-change----------" << endl; int b[5] = { 11, 12, 13, 14, 15 }; v1.insert(v1.begin() + 1, b+1, b+3); //在v1的第1個元素後面的位置插入 b第一個元素後面,第三個元素後面的前面的值(12 13),如v1為0 4 4 4 5 3 2 2 2 2 8 111,插入元素後為0 12 13 4 4 4 5 3 2 2 2 2 8 111 for (int i = 0; i < v1.size(); i++){ cout << v1[i] << endl; } cout << "----------v1-change----------" << endl; vector<char> v6(2,'Z'); v6[0] = 'A'; char bb[5] = { 'a', 'b', 'c', 'd', 'e' }; v6.insert(v6.begin() + 1, bb + 1, bb + 3); for (int i = 0; i < v6.size(); i++){ cout << v6[i] << endl; } cout << "----------v6-change----------" << endl; //A b c Z(char型插入) cout << v1.size() << " " << v6.size() << endl; //a.size(); 返回a中元素的個數; v1.resize(10); //將v1的現有元素個數調至10個,多則刪,少則補,其值隨機 初始值 0 12 13 4 4 4 5 3 2 2 2 2 8 111 for (int i = 0; i < v1.size(); i++){ cout << v1[i] << endl; } cout << "----------v1-change----------" << endl; //結果 0 12 13 4 4 4 5 3 2 2 v1.resize(12,6); //將v1的現有元素個數調至12個,多則刪,少則補,補值6 初始值 0 12 13 4 4 4 5 3 2 2 for (int i = 0; i < v1.size(); i++){ cout << v1[i] << endl; } cout << "----------v1-change----------" << endl; //結果 0 12 13 4 4 4 5 3 2 2 6 6 v2.swap(v1); //v2為向量,將v1中的元素和v2中的元素進行整體性交換 for (int i = 0; i < v1.size(); i++){ cout << v1[i] << endl; } cout << "----------v1-v2-huhuan----v1-----" << endl; //8 8 8 8 8 8 8 8 for (int i = 0; i < v2.size(); i++){ cout << v2[i] << endl; } cout << "----------v1-v2-huhuan---v2------" << endl; //0 12 13 4 4 4 5 3 2 2 6 6 bool flag14 = (v1 == v4); int flag24 = (v2 == v4); //向量的比較操作還有!=,>=,<=,>,< cout << flag14 << endl; //通常,cout在顯示布林值之前將它轉化為int 1 //cout << boolalpha << flag14 << endl; //cout顯示布林值 true cout << "----------1111111111111------" << endl; cout << flag24 << endl; //0 //cout << boolalpha << flag24 << endl; //cout顯示布林值 但flag24是int 所以依然輸出0 cout << "---------00000000000000-----" << endl; bool flag = v1.empty(); //判斷v1是否為空,空則返回ture,不空則返回false cout << flag << endl; //通常預設情況下,cout在顯示布林值之前將它轉化為int 0 cout << boolalpha << flag << endl; //cout顯示布林值 cout << flag << endl; //沿襲上一種返回方式 cout << noboolalpha << flag << endl; //bool到int cout << flag << endl; cout << "--------------------" << endl; v1.clear(); //清空v1中的元素 bool flag1 = v1.empty(); cout << flag1 << endl; system("pause"); return 0; }
三 幾種重要的演算法,使用時需要包含標頭檔案:
#include<algorithm>
1 sort(v6.begin(), v6.end()); // 排序
2 reverse(v6.begin(), v6.begin()+3); // 元素倒置
3 int num =count(v6.begin(), v6.end(), 'Z'); //在v6中的從v6.begin()到v6.end()的元素中查詢'Z'的個數
程式碼測試如下
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<char> v6(2,'Z');
v6[0] = 'A';
char bb[5] = { 'a', 'b', 'c', 'd', 'e' };
v6.insert(v6.begin() + 1, bb + 1, bb + 3);
for (int i = 0; i < v6.size(); i++){
cout << v6[i] << endl;
}
cout << "----------v6-change----------" << endl; //A b c Z(char型插入)
sort(v6.begin(), v6.end()); // 排序
for (int i = 0; i < v6.size(); i++){
cout << v6[i] << endl;
}
cout << "----------v6-change----------" << endl; //A Z b c
reverse(v6.begin(), v6.begin()+3); // 元素倒置
for (int i = 0; i < v6.size(); i++){
cout << v6[i] << endl;
}
cout << "----------v6-change----------" << endl; //b Z A c
v6.push_back('Z'); //末尾加元素
for (int i = 0; i < v6.size(); i++){
cout << v6[i] << endl;
}
cout << "----------v6-change----------" << endl; //b Z A c Z
int num =count(v6.begin(), v6.end(), 'Z'); //在v6中的從v6.begin()到v6.end()的元素中查詢'Z'的個數
cout <<num << endl;
cout << "----------v6-change----------" << endl; //b Z A c Z //2
system("pause");
return 0;
}
相關推薦
C++ vector知識點、cout輸出bool格式與int格式轉換
一、vector 的初始化:可以有五種方式,舉例說明如下 (1) vector<int> a(10); //定義了10個整型元素的向量(尖括號中為元素型別名,它可以是任何合法的資料型別),但沒有給出初值,其值是不確定的。 (2)vector<int&
C# Vector定義、operator 使用
/// <summary> /// 向量類 /// </summary> public class Vector { public double x, y, z; public Vector() {
YUV 格式與 RGB 格式的相互轉換公式及C++ 程式碼
YUV 格式與 RGB 格式的相互轉換公式 最近在用的一個工業相機,輸出的影象格式是 YUY2 格式。而在電腦上顯示時需要 RGB 格式,所以就花了些時間在網上查了些相關的資料。說實話,網上關於 YUV 與 RGB 格式變換的文章挺多的,本來不需要我再多寫這麼
c++中string、const char*和char*之間的相互轉換
1. string轉const char* string s = “abc”; const char* c_s = s.c_str(); 2. const char* 轉string,直接賦值即可 const char* c_s = “abc”; string s(c_s
Intel格式與Motorola格式的區別
文章出處:http://blog.csdn.net/ppdyhappy/article/details/52700464 Intel低位元組在前 Motorola高位元組在前 在進行CAN匯流排通訊設計或者測試過程中,經常看到
報文 Intel 格式與Motorola 格式的區別
當一個訊號的資料長度不超過 1 個位元組(8 位)時,Intel 與 Motorola 兩種格式的編碼結果沒有什麼不同,完全一樣。當訊號的資料長度超過 1 個位元組(8 位)時,兩者的編碼結果出現 了明顯的不同。 訊號的高位,即最能表達訊號特性的因子,比如:車速訊號 500km/
bmp 格式 與jpg 格式區別
BMP: 優點 無失真壓縮,圖質最好,缺點(檔案太大,不利於網路傳輸)。 GIF:優點(動畫儲存格式),缺點(最多256色,畫質差)。 PNG:優點(可儲存透明背景的圖片),缺點(畫質中等) JPG:優點(檔案小,利於網路傳輸),缺點(畫質損失) BMP BMP(
YUV格式與RGB格式
YUV420介紹: YUV420格式是指,每個畫素都保留一個Y(亮度)分量,而在水平方向上,不是每行都取U和V分量,而是一行只取U分量,則其接著一行就只取V分量,以此重複(即4:2:0, 4:0:2, 4:2:0, 4:0:2 .......),所以420不是指沒有V,而是指一行取樣只取U,另一行取樣只取V
C++解析(20):智能指針與類型轉換函數
font 類類型 有一個 安全 ont 運行 root 工作 sign 0.目錄 1.智能指針 2.轉換構造函數 3.類型轉換函數 4.小結 1.智能指針 內存泄漏(臭名昭著的Bug): 動態申請堆空間,用完後不歸還 C++語言中沒有垃圾回收機制 指針無法控制所指堆空間的
資料集.npy格式與png格式互換
深度學習中,有時我們需要對資料集進行預處理,這樣能夠更好的讀取資料。 一、png格式生成.npy格式 import numpy as np import os from PIL im
當oracle出現 格式與字串格式不匹配解決辦法
select v.spid spid,v.appid appid,v.version version,v.newversion newversion,v.status status,v.createtime createtime from adc_spversioncha
JavaScript JSON的key 下劃線格式與駝峰格式互相轉換
我們編碼的格式是使用駝峰式還是下劃線格式,這個爭論由來已久,這不,我負責的vue.js前端剛剛做好,發現後臺介面是使用Python寫的,導致介面的所有欄位都是下劃線格式的,而我又希望介面改成駝峰格式,後
keystore格式與pfx格式證書互轉
今天運維同事在阿里雲上申請了pfx格式的SSL證書,但是tomcat只能識別keystore格式的,所以需要轉換一下。按照下面的程式碼轉換,需要注意的是KEYSTORE_PASSWORD這裡的密碼不是隨便弄的,是生成pfx證書的時候會同時生成一個密碼,,然後就使用這個密碼。。。 pa
java實現HTTP的post請求 key-value格式與json格式的區別
之前寫過介面接收json格式的post請求,當時自己寫完以為可以適應各種報文的傳送,最近對方說要有個”content=傳送內容”,這不就是最簡單的post請求嗎,那直接用我之前寫的http://blog.csdn.net/do_finsh/article/det
Oracle和Sql 日期格式與字串格式相互轉換
日期格式轉換為字元型別 Oracle 型別日期格式轉換字串型別 1.date 轉換為 字串 to_char(日期,”轉換格式” ) 即把給定的日期按照“轉換格式”轉換。 轉換的格式: 表示year的:y 表示年的最後一位 yy 表示年的最後2位 y
bmp 格式 與jpg 格式區別
BMP: 優點 無失真壓縮,圖質最好,缺點(檔案太大,不利於網路傳輸)。 GIF:優點(動畫儲存格式),缺點(最多256色,畫質差)。 PNG:優點(可儲存透明背景的圖片),缺點(畫質中等) JPG:優點(檔案小,利於網路傳輸),缺點(畫質損失) BMP BMP(全稱
CAN報文 Intel 格式與Motorola 格式的區別
當一個訊號的資料長度不超過 1 個位元組(8 位)時,Intel 與 Motorola 兩種格式的 編碼結果沒有什麼不同,完全一樣。當訊號的資料長度超過 1 個位元組(8 位)時,兩者的編碼結果出現 了明顯的不同 1. 訊號的高位,即最能表達訊號特性
SAP中ABAP格式與JSON格式互轉方法研究
一、JSON概念JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。JSON資料格式示例: { "學生": [ {"姓名":"小明","年齡":23}, {"姓名":"大憨","年齡":2
xml格式與陣列格式相互轉化
<?php /** 2016年10月18日14:09:01 **/ simplexml 解析 xml 文件 //匯入xml文件 $sx = simplexml_load_file('./
C++中cout輸出字符型指針地址值的方法
ostream stream .net space http sys details 技術分享 -1 轉載:http://blog.csdn.net/u013467442/article/details/43666955 #include<iostream>