Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Special Interest Groups
  3. C++ Gurus
  4. what is meaning of below c++ map means ?
Forum Updated to NodeBB v4.3 + New Features

what is meaning of below c++ map means ?

Scheduled Pinned Locked Moved Solved C++ Gurus
2 Posts 2 Posters 278 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Q Offline
    Q Offline
    Qt embedded developer
    wrote on last edited by Qt embedded developer
    #1

    In below code i am not understanding the concept of the below statement :

    sqliteManagerMap.insert(std::pair<int,SqliteManagerBGSync>(threadId,new SqliteManagerBGSync()))*

    can any body explain me it theoretically. what this statement do ?

    namespace app
    {
    namespace dbmanager
    {
    std::map<int,SqliteManagerBGSync *> SqliteManagerBGSync::sqliteManagerMap;
    SqliteManagerBGSync::SqliteManagerBGSync()
    {
    	DBGF_TRACE("AFCS:SqliteManagerBGSync::Constructor Called");
    	handle = NULL;
    }
    
    SqliteManagerBGSync* SqliteManagerBGSync::GetDBInstance()
    {
    	std::map<int,SqliteManagerBGSync*>::iterator it;
    	int threadId = pthread_self();
    	DBGF_TRACE("AFCS:SqliteManagerBGSync::thread Id :%d",threadId);
    
    	//sqliteManagerMap.empty() Return 0 If sqliteManagerMap is Not Empty
    	//Return 1 If sqliteManagerMap is Empty
    	DBGF_TRACE("AFCS:SqliteManagerBGSync::GetDBInstance()::sqliteManagerMap.empty()=%d",sqliteManagerMap.empty());
    
    	if(sqliteManagerMap.empty())
    	{
    		DBGF_TRACE("AFCS:SqliteManagerBGSync::GetDBInstance()::sqliteManagerMap.empty() IF");
    		if(pthread_mutex_init(&databaseLock, NULL) != 0)
    		{
    			DBGF_TRACE("databaseLock mutex init failed");
    
    		}
    		else
    		{
    			DBGF_TRACE("databaseLock mutex init Success");
    
    		}
    	}
    	it = sqliteManagerMap.find(threadId);
    	if(it == sqliteManagerMap.end())
    	{
    		DBGF_TRACE("AFCS:SqliteManagerBGSync::GetDBInstance()::threadId Find Success");
        
    		sqliteManagerMap.insert(std::pair<int,SqliteManagerBGSync*>(threadId,new SqliteManagerBGSync()));
    		DBGF_TRACE("AFCS:sqliteManagerMap insert called");
    
    		it = sqliteManagerMap.find(threadId);
    	}
    	DBGF_TRACE("AFCS:SqliteManagerBGSync::sqliteManagerMap success return 2");
    
    	DBGF_TRACE("SqliteManagerBGSync::GetDBInstance _heap_max() = %d",_heap_max());
    	DBGF_TRACE("SqliteManagerBGSync::GetDBInstance _heap_current() = %d",_heap_current());
    
    	return it->second;
    }
    
    KroMignonK 1 Reply Last reply
    0
    • Q Qt embedded developer

      In below code i am not understanding the concept of the below statement :

      sqliteManagerMap.insert(std::pair<int,SqliteManagerBGSync>(threadId,new SqliteManagerBGSync()))*

      can any body explain me it theoretically. what this statement do ?

      namespace app
      {
      namespace dbmanager
      {
      std::map<int,SqliteManagerBGSync *> SqliteManagerBGSync::sqliteManagerMap;
      SqliteManagerBGSync::SqliteManagerBGSync()
      {
      	DBGF_TRACE("AFCS:SqliteManagerBGSync::Constructor Called");
      	handle = NULL;
      }
      
      SqliteManagerBGSync* SqliteManagerBGSync::GetDBInstance()
      {
      	std::map<int,SqliteManagerBGSync*>::iterator it;
      	int threadId = pthread_self();
      	DBGF_TRACE("AFCS:SqliteManagerBGSync::thread Id :%d",threadId);
      
      	//sqliteManagerMap.empty() Return 0 If sqliteManagerMap is Not Empty
      	//Return 1 If sqliteManagerMap is Empty
      	DBGF_TRACE("AFCS:SqliteManagerBGSync::GetDBInstance()::sqliteManagerMap.empty()=%d",sqliteManagerMap.empty());
      
      	if(sqliteManagerMap.empty())
      	{
      		DBGF_TRACE("AFCS:SqliteManagerBGSync::GetDBInstance()::sqliteManagerMap.empty() IF");
      		if(pthread_mutex_init(&databaseLock, NULL) != 0)
      		{
      			DBGF_TRACE("databaseLock mutex init failed");
      
      		}
      		else
      		{
      			DBGF_TRACE("databaseLock mutex init Success");
      
      		}
      	}
      	it = sqliteManagerMap.find(threadId);
      	if(it == sqliteManagerMap.end())
      	{
      		DBGF_TRACE("AFCS:SqliteManagerBGSync::GetDBInstance()::threadId Find Success");
          
      		sqliteManagerMap.insert(std::pair<int,SqliteManagerBGSync*>(threadId,new SqliteManagerBGSync()));
      		DBGF_TRACE("AFCS:sqliteManagerMap insert called");
      
      		it = sqliteManagerMap.find(threadId);
      	}
      	DBGF_TRACE("AFCS:SqliteManagerBGSync::sqliteManagerMap success return 2");
      
      	DBGF_TRACE("SqliteManagerBGSync::GetDBInstance _heap_max() = %d",_heap_max());
      	DBGF_TRACE("SqliteManagerBGSync::GetDBInstance _heap_current() = %d",_heap_current());
      
      	return it->second;
      }
      
      KroMignonK Offline
      KroMignonK Offline
      KroMignon
      wrote on last edited by KroMignon
      #2

      @Qt-embedded-developer said in what is meaning of below c++ map means ?:

      In below code i am not understanding the concept of the below statement :
      sqliteManagerMap.insert(std::pair<int,SqliteManagerBGSync>(threadId,new SqliteManagerBGSync()))*
      can any body explain me it theoretically. what this statement do ?

      As described in std:map documentation => https://www.cplusplus.com/reference/map/map/insert/
      It insert a new item in to map.

      It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

      1 Reply Last reply
      4

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved