1. 程式人生 > >c++中set的使用:初始化和去重、排序

c++中set的使用:初始化和去重、排序

1.set的初始化可以直接用迭代器,set的定義和初始化方式包括:

  • set<T> s;
  • set<T> s(s1);
  • set<T> s(b, e);

其中,b和e分別為迭代器的開始和結束的標記。

例如:

#include <stdio.h>
#include <vector>
#include <set>

using namespace std;

int main(){
        vector<int> v;
        for (int i = 0; i < 10; i++){
                v.push_back(i);
                v.push_back(i);
        }

        set
<int>
s(v.begin(), v.end()); printf("%d\n", v.size()); printf("%d\n", s.size()); return 0; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

注意:鍵是不能重複的。

2.set中的元素沒有重複,並且預設從小到大排序

詳情參照https://www.cnblogs.com/litaozijin/p/6665595.html

相關推薦

c++set的使用初始排序

1.set的初始化可以直接用迭代器,set的定義和初始化方式包括: set<T> s;set<T> s(s1);set<T> s(b, e); 其中,b和e分別為迭代器的開始和結束的標記。 例如: #include <stdi

C++的值初始預設初始

1、值初始化       顧名思義,就是用數值初始化變數。如果沒有給定一個初始值,就會根據變數或類物件的型別提供一個初始值。對於int型別其值初始化後的值為0。 2、預設初始化:如果定義變數時沒有指定初值,則變數被預設初始化。其初始值和變數的型別以及變數定義的位

Java基礎初始清理

class mil key java基礎 一個 add one his span 轉載請註明出處:jiq?欽‘s technical Blog (1) 初始化:所以假設繼承關系為:A導出B再導出C,在創建C對象的情況下的調用順序是: * (1) A的靜態域,B的靜態域

C#怎樣實現序列反序列

image .com 合並 小白 str mat get new ons 我們想要將數據進行持久化的操作的話,也就是將數據寫入到文件中,我們在C#中可以通過IO流來操作,同時也可以通過序列化來操作,本人是比較推薦使用序列化操作的 因為我們如果想要將一個對象持久化到文件中

C++只能使用初始列表(只能是初始)不能使用賦值的情況

(1)當類中含有const(常量)、reference(引用)成員變數時,只能初始化,不能對它們進行賦值;      常量不能被賦值,只能被初始化,所以必須在初始化列表中完成,C++引用也一定要初始化,所以必須在初始化列表中完成。 (2)基類的建

C++變數預設初始規則

轉載連結地址:http://www.cnblogs.com/FoxShark/p/5802239.html 定義沒有初始化式的變數時,系統有時候會幫我們初始化變數。系統如何初始化取決於變數的型別以及變數定義的位置。   1、內建型別變數是否自動初始化取決於變數定義的位置。函式體外定義的變

C++解析(12)初始列表與物件構造順序

0.目錄 1.類成員的初始化 2.類中的const成員 3.物件的構造順序 3.1 區域性物件的構造順序 3.2 堆物件的構造順序 3.3 全域性物件的構造順序 4.小結 1.類成員的初始化 類中是否可以定義const成員? 下面的類定義是否合法?如果合法,ci的值是什麼,儲

深度學習的Xavier初始He Initialization(MSRA初始Tensorflow如何選擇合適的初始方法?

Xavier初始化: 論文:Understanding the difficulty of training deep feedforward neural networks 論文地址:http://proceedings.mlr.press/v9/glorot10a/glorot10a

Linux套接字與虛擬檔案系統(1)初始建立

引言    在Unix的世界裡,萬物皆檔案,通過虛擬檔案系統VFS,程式可以用標準的Unix系統呼叫對不同的檔案系統,甚至不同介質上的檔案系統進行讀寫操作。對於網路套接字socket也是如此,除了專屬的Berkeley Sockets API,還支援一些標準的檔案IO系統呼叫如read(v)、w

重新認識memset函式及c++陣列的初始賦值

下面就好好重新認識一下這個函式,自己寫了測試的程式碼,memset到底怎麼用呢? 先貼測試程式碼: #include<iostream> #include<cstdio> #include<algorithm> #include<string>

第4 章初始清除

本章開始介紹構建器,它的作用是擔保初始化的正確實現。對構建器的定義要涉及函式過載的概念(因為可能同時有幾個構建器)。隨後要討論的是清除過程,它並非肯定如想象的那麼簡單。用完一個物件後,通常 可以不必管它,垃圾收集器會自動介入,釋放由它佔據的記憶體。這裡詳細探討了垃圾收集器以及

C語言結構體初始結構體指標

結構體初始化 #include <stdio.h> //結構體的宣告和定義方法 //1.宣告和定義分離 struct weapon{ char name[20]; in

java類的初始物件的例項區別

在程式RUN的一瞬間,什麼類啊,靜態的東西啊(靜態塊,靜態方法,靜態屬性),刷刷刷的就在記憶體中載入(你可以看作初始化)了,只加載一次,然後main方法開始執行(這就是為什麼main方法必須是靜態的原

C++必須在初始列表初始的型別

1.賦值是刪除原值,賦予新值,建構函式的意思是先開闢空間然後為其賦值,只能算是賦值,不算初始化;初始化列表開闢空間與初始化是同時完成的,直接給予一個值。 2. C++中常量是不能被賦值的,只能被初始化,所以const型別必須在初始化列表中完成; 3. 引用必須在定義的時候初

c++建構函式初始的方法以及主要區別

一、我的問題是關於初始化C++類成員的。我見過許多這樣的程式碼: CSomeClass::CSomeClass() { x=0; y=1; } 而在別的什麼地方則寫成下面的樣子: CSomeClass::CSomeClass() : x(0), y(1) { } 我的一些程式設計師朋友說第

C#的XML序列Json序列,普通陣列轉位元組陣列

C#在於其他語言進行資料通訊時,直接傳遞的時二進位制的位元組碼,而一個要傳遞的物件的二進位制位元組碼在C#中有很多表示方法。其中直接轉換為Byte陣列和序列化未byte陣列,還有xml序列化,json序列化最未常用,下面簡單舉例介紹一下這幾種方法。 usin

C# XML的序列反序列

這是第一篇文章,原本是在新浪微博寫的,但是新浪不支援插入程式碼,在這裡再寫一遍。但是主要目的還是記錄下來,好記性不如爛筆頭。 不做過多介紹,直接貼我的東西 生成的xml檔案 <?xml version="1.0" encoding="utf-8"?> <

C++建構函式初始列表為什麼會比建構函式賦值要高效

Test { Test(test& t1) { this->t=t1; } private: test t; } 相信很多人跟我一樣,非常困惑為什麼Test構造時會先呼叫test的建構函式,再呼叫test類的賦值操作符。那是因為賦值操作符不能產生新的物件,Te

c++兩種初始方式的區別

首先我們來看一下兩種初始化:int ival(1000);//直接初始化是將初始化式放在括號裡int ival=1000;//複製初始化是用等號(=)那麼這兩種方式有什麼區別呢?我們可以這樣認為,對於內建型別來說,複製初始化和直接初始化幾乎沒有差別,對於類型別來講,當建立類型

C++的複製初始與直接初始

C++ Primer裡說過,在C++中,初始化不等於賦值,初始化是指建立變數並給變數賦初值,而賦值是指擦除變數的當前值並用新值替換。C++中有兩種初始化方法,直接初始化和複製初始化。直接初始化是指使用 Object obj(patamer)這樣的語句,Object可以是內建