1. 程式人生 > >C++ vector知識點、cout輸出bool格式與int格式轉換

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++中stringconst 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>