Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   std::list поиск (https://forum.antichat.xyz/showthread.php?t=61091)

fucker"ok 06.02.2008 00:00

std::list поиск
 
Нужно избавиться от одной лишней операции в коде, дабы её 100% можно заменить, но вот с указателями и тп я не дружу
PHP код:

#include <iostream>
#include <list>
#include <string>
using namespace std;

struct Someshit
{
        
string name;
        
int id;
};
int main(int argcchar *argv[])
{
        
Someshit sometmp;
        list <
Someshitsomelist;
        
some.name="aa";
        
somelist.push_back(some);
        
some.name="bb";
        
somelist.push_back(some);
        
some.name="cc";
        
somelist.push_back(some);
        
//и подобного много раз
        
list <Someshit>::iterator listpos;
        
int i 0;
        for (
listpos somelist.begin(); listpos != somelist.end(); listpos++)
        {
                
tmp = *listpos//НЕ НУЖНОЕ И не желательное действие
                
i++;
                if (
tmp.name == "bb"cout << << " BB найдено \n"//а вот это нужно как-то сделать через listpos
                
if (tmp.name[0] == 'c'cout << << " первая C найдена \n"// и это тоже
        
}
        return 
0;



Так-вот от копирования в переменную tmp мне и нужно избавиться, тоесть я хочу добираться до элементов структуры через lispos, дабы в дальнейшем я мог их сравнивать.

Forcer 06.02.2008 00:34

Код:

#include <iostream>
#include <list>
#include <string>
using namespace std;

struct Someshit
{
        string name;
        int id;
};
int main(int argc, char *argv[])
{
        Someshit some; // здесь изменено - убрана переменная tmp
        list <Someshit> somelist;
        some.name="aa";
        somelist.push_back(some);
        some.name="bb";
        somelist.push_back(some);
        some.name="cc";
        somelist.push_back(some);
        //и подобного много раз
        list <Someshit>::iterator listpos;
        int i = 0;
        for (listpos = somelist.begin(); listpos != somelist.end(); listpos++)
        {               
                i++;
                if (listpos->name == "bb") cout << i << " BB найдено \n"; // здесь изменено
                if (listpos->name[0] == 'c') cout << i << " первая C найдена \n"; // здесь изменено
        }
        return 0;

}



Время: 14:05