• C++ std::deque 基本用法


    #include <iostream>
    #include <string>
    #include <deque>
    
    // https://zh.cppreference.com/w/cpp/container/deque
    
    // vector 和 deque 的差别
    // https://www.cnblogs.com/zhuyf87/archive/2012/12/09/2809896.html
    
    using namespace std;
    
    
    int main()
    {
    	int a[] = { 1,2,3 };
    	deque<int> deq = {1,2,3};
    
    	//////////////////////////////////////////////////////////////////////////
    	
    	deq.assign(4, 5); // 5 5 5 5
    
    	deque<int> deq1 = deq; // deep copy
    	deq1[0] = 10;
    	deq1.at(0) = 25;
    	int vhead = deq1.front();
    	int vtail = deq1.back();
    
    	//////////////////////////////////////////////////////////////////////////
    	// 迭代器
    
    	for (auto it = deq1.begin(); it != deq1.end(); ++it)
    	{
    		std::cout << *it << " ";
    	}
    	std::cout << std::endl; // 25 2 3
    
    	for (auto it = deq1.cbegin(); it != deq1.cend(); ++it)
    	{
    		std::cout << *it << " ";
    	}
    	std::cout << std::endl; // 25 2 3
    
    	for (auto it = deq1.rbegin(); it != deq1.rend(); ++it)
    	{
    		std::cout << *it << " ";
    	}
    	std::cout << std::endl; // 3 2 25
    
    
    	//////////////////////////////////////////////////////////////////////////
    	
    	bool isEmpty = deq1.empty();
    	size_t size = deq1.size();
    	size_t mSzie = deq1.max_size();
    
    	deq1.clear();
    	deq1.shrink_to_fit();
    
    	deq1.insert(deq1.begin(), 6);
    	deq1.emplace(deq1.begin(), 7);
    
    	deq1.insert(deq1.begin(), 2, 55);
    
    	deque<int> deqtt = {11,22,33}; 
    	deq1.insert(deq1.begin(), deqtt.begin(), deqtt.end()); // 11 22 33 55 55 7 6 
    
    	deq1.insert(deq1.begin(), {999, 888}); // 999 888 11 22 33 55 55 7 6 
    
    	deq1.push_back(88);
    	deq1.emplace_back(99);
    
    	deq1.push_front(100);
    	deq1.emplace_front(110);
    
    	deq1.erase(deq1.begin());
    	deq1.erase(deq1.begin(), deq1.end());
    
    	deq1.swap(deqtt); // 交换的 size 大小不必一样
    
    	//////////////////////////////////////////////////////////////////////////
    	// resize 以及初始化值什么时候起作用
    
    	deq1.clear();
    	deq1.resize(2); // 0 0
    	deq1.resize(2, 4); // 0 0  其中的 4 还不起作用。
    
    	deq1.clear();
    	deq1.resize(2, 4); // 4 4 
    	deq1.resize(2); // 4 4 没有改变 size,见下面的说明
    
    	deq1.clear();
    	deq1.resize(2); // 0 0
    	deq1.resize(3, 4); // 0 0 4  当 size 要改变时,4 时新值的初始值!原来的空间时不会删除的,也不改变。
    
    	deq1.clear();
    	deq1.resize(2, 4); // 4 4 
    	deq1.resize(3); // 4 4 0 默认的 int 初始值为 0
    
    	return 0;
    }
    

      

  • 相关阅读:
    Windows phone 应用开发[9]单元测试
    Git Tool Part 2
    Windows phone 应用开发[6]Managed Extensibility Framework应用程序扩展
    也谈存储过程分页
    上传图像到sqlserver
    这两段代码是不同的
    TextBox中的TextChanged和KeyDown事件的小区别
    发现发现返回一条记录的datareader的新用法
    最近好多疑问啊!高手给点意见吧!
    csdn论坛去不了,只有在这里问了
  • 原文地址:https://www.cnblogs.com/alexYuin/p/12080028.html
Copyright © 2020-2023  润新知