Deque push_back



  • Hallo,

    #include "stdafx.h"
    #include <iostream>
    #include <conio.h>
    #include <ctime>
    #include <windows.h>
    #include <string>
    /* Container */
    #include <list>
    #include <vector>
    #include <deque>
    
    int main(int argc, _TCHAR* argv[])
    {
    	std::vector<int> sample1(10, 8);
    	std::vector<int> sample2(10,8);
    	std::string db[] = {
    		"Hallo", "Hello", "Test", "Haha",
    		"Hoeh?", "Hello?", "Test?", "Haha?"
    	};
    	srand((unsigned) time(0));
    	int zrand = rand() % sizeof(db)/sizeof(*db);
    	std::deque<std::string> mydb(10, "empty");
    	if(sample1 == sample2)
    	{
    		std::cout << "Beide Container gleich." << std::endl;
    		std::cout << "Datenbank:" << std::endl;
    		for(std::string::size_type index = 0; index != mydb.size(); ++index)
    		{
    			std::cout << mydb[index] << std::endl;
    			if(mydb[index] == "empty")
    			{
    				std::cout << "Datenbank leer.";
    				break;
    			} else {
    				std::cout << "Datenbank aktualisiert..." << index << std::endl;
    			}
    		}
    	} else {
    		std::cout << "Container ungleich." << std::endl;
    		std::cout << "Groesse: " << mydb.size() << std::endl;
    		db[zrand].push_back(mydb); // Hier der FEHLER
    		std::cout << "Zufallswort: " << db[zrand] << std::endl;
    		std::cout << "Groesse: " << mydb.size() << std::endl;
    		for(std::string::size_type index = 0; index != mydb.size(); ++index)
    		{
    				std::cout << db[index] << std::endl;
    		}
    	}
    
    	std::cin.get();
    	return 0;
    }
    

    der Compiler sagt:

    error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::push_back': Konvertierung des Parameters 1 von 'std::deque<_Ty>' in 'char' nicht möglich
    1>        with
    1>        [
    1>            _Elem=char,
    1>            _Traits=std::char_traits<char>,
    1>            _Ax=std::allocator<char>
    1>        ]
    1>        and
    1>        [
    1>            _Ty=std::string
    1>        ]
    1>        Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
    

    Wieso eigentlich?

    db[zrand].push_back(mydb);
    

    Mit freundlichen Grüßen 🙂



  • db[zrand].push_back(mydb.c_str());



  • Äh, nicht eher

    mydb.push_back(db[zrand]);
    

    ?



  • Threadtitel schrieb:

    Deque push_back

    =>

    Danie1 schrieb:

    std::string db[] = {
    ...
       db[zrand].push_back(
    

    Na ? Von welcher Klasse wird denn eigentlich push_back() aufgerufen ? 😉

    Gruß,

    Simon2.



  • du haust die deque per push_back in den String rein oder versuchst es zumindest. Andersrum wird vielleicht n Schuh draus 😉


Anmelden zum Antworten