Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: Aluminium
Дата сообщения: 13.09.2011 11:21
Доброго дня.
уже второй день гуглю на тему статического линкования библиотек, но так нифига и не понял.
есть [more=код]
Код: #include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdlib.h>
#include <curl/curl.h>

void main()
{
CURL *curl;
CURLcode curl_res;
CURLINFO info;
char tmp_file[] = "cstrike.wad";
FILE *tmp;
double c_length, time_transfer, download_speed;

if ((tmp = fopen(tmp_file,"w")) == NULL)
{
printf("Невозможно произвести запись на диск\n");
exit(1);
}

curl = curl_easy_init();
curl_easy_setopt(curl,CURLOPT_URL,"http://cs.matrixhome.net/cs_download/cstrike.wad");
curl_easy_setopt(curl,CURLOPT_WRITEDATA,tmp);
if ((curl_res = curl_easy_perform(curl)) != 0)
{
printf("Ошибка загрузки\n");
exit(1);
}

curl_easy_getinfo(curl,CURLINFO_SIZE_DOWNLOAD,&c_length);
printf("size of file: %g bytes\n",c_length);
curl_easy_getinfo(curl,CURLINFO_SPEED_DOWNLOAD,&download_speed);
printf("downloaded speed: %g kb/sec\n",download_speed/1024);
fflush(tmp);
fclose(tmp);
curl_easy_cleanup(curl);
}
Автор: Abs62
Дата сообщения: 13.09.2011 16:58
Aluminium

Цитата:
CodeBlocks -> Project build options -> Release -> Linker settings -> Link libraries -> добавил "..\..\MinGW\lib\libcurldll.a"

"..\..\MinGW\lib\libcurl.a"
Автор: Aluminium
Дата сообщения: 14.09.2011 19:40
заменил и вот что получил в ответ
[more]
Код: Compiling: D:\C++\programs\www_download\download_new.c
Linking console executable: D:\C++\programs\www_download\download_new.exe
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(url.o):(.text+0x3184): undefined reference to `stringprep_check_version'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(url.o):(.text+0x31b8): undefined reference to `idna_to_ascii_lz'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(url.o):(.text+0x31c0): undefined reference to `stringprep_locale_charset'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(url.o):(.text+0x31fb): undefined reference to `idna_to_unicode_lzlz'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(url.o):(.text+0x3252): undefined reference to `tld_check_lz'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x2a0): undefined reference to `_imp__ldap_set_optionA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x2c3): undefined reference to `_imp__ldap_initA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x2e7): undefined reference to `_imp__ldap_set_optionA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x31f): undefined reference to `_imp__ldap_simple_bind_sA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x37e): undefined reference to `_imp__ldap_search_sA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x3b1): undefined reference to `_imp__ldap_first_entry'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x3e0): undefined reference to `_imp__ldap_get_dnA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x476): undefined reference to `_imp__ldap_first_attributeA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x4a6): undefined reference to `_imp__ldap_get_values_lenA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x63b): undefined reference to `_imp__ldap_value_free_len'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x68e): undefined reference to `_imp__ldap_memfreeA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x6a8): undefined reference to `_imp__ldap_next_attributeA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x6bf): undefined reference to `_imp__ldap_memfreeA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x6dd): undefined reference to `_imp__ldap_next_entry'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x6f9): undefined reference to `_imp__ldap_err2stringA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x742): undefined reference to `_imp__ldap_unbind_s'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x7ac): undefined reference to `_imp__ldap_msgfree'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x7f6): undefined reference to `_imp__ldap_set_optionA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x828): undefined reference to `_imp__ldap_simple_bind_sA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x84a): undefined reference to `_imp__ber_free'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x85b): undefined reference to `_imp__ldap_err2stringA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ldap.o):(.text+0x888): undefined reference to `_imp__ldap_err2stringA'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0x3ea): undefined reference to `libssh2_session_block_directions'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0x4b9): undefined reference to `libssh2_channel_write_ex'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0x529): undefined reference to `libssh2_channel_read_ex'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0x597): undefined reference to `libssh2_sftp_write'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0x607): undefined reference to `libssh2_sftp_read'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0x8e4): undefined reference to `libssh2_session_set_blocking'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0x912): undefined reference to `libssh2_session_startup'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xa6e): undefined reference to `libssh2_sftp_stat_ex'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xa99): undefined reference to `libssh2_sftp_last_error'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xb26): undefined reference to `libssh2_sftp_symlink_ex'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xb56): undefined reference to `libssh2_sftp_last_error'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xbf2): undefined reference to `libssh2_sftp_mkdir_ex'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xc1d): undefined reference to `libssh2_sftp_last_error'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xca1): undefined reference to `libssh2_sftp_rename_ex'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xccc): undefined reference to `libssh2_sftp_last_error'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xd38): undefined reference to `libssh2_sftp_rmdir_ex'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xd68): undefined reference to `libssh2_sftp_last_error'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xdbf): undefined reference to `libssh2_sftp_unlink_ex'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xdea): undefined reference to `libssh2_sftp_last_error'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0xf0b): undefined reference to `libssh2_sftp_open_ex'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0x1077): undefined reference to `libssh2_sftp_seek64'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0x11a3): undefined reference to `libssh2_sftp_readdir_ex'
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libcurl.a(ssh.o):(.text+0x1321): undefined reference to `libssh2_sftp_symlink_ex'
Process terminated with status 1 (0 minutes, 1 seconds)
50 errors, 0 warnings
Автор: Abs62
Дата сообщения: 14.09.2011 20:24
Aluminium
Ну так остальные библиотеки тоже надо добавить, значит. Те, которые без "dll".
Автор: TeXpert
Дата сообщения: 18.09.2011 15:02
Срочно требуется совет

Работаю над кросс-платформенным проектом, выбрал для этого Qt 4.7.3 (это мой первый опыт с этой библиотекой). Срочно нужны исходники, реализующие базовую функциональность работы с матрицами: нахождение собственных чисел, и вычисление норм и т. д. Знаю, что есть стандартные библиотеки (LINPACK и другие), но у меня сейчас времени нет разбираться с их структурами (это я позже сделаю, не спеша, скорее всего воспользуюсь Intel MKL). Сейчас для меня важен работающий код, не самый сложный, но правильно работающий и проверенный, чтобы я мог без особых извращений быстро подцепить в свой проект (напомню, проект на C++)

Спасибо
Автор: karakurt2
Дата сообщения: 18.09.2011 15:28
возьми исходники из книжек

Numerical Recipes in C

или

Гайдышев - Анализ и обработка данных
Автор: TeXpert
Дата сообщения: 18.09.2011 15:39
karakurt2
Цитата:
Гайдышев - Анализ и обработка данных
Не поделишься ссылками на исходники? Насколько они проверенные?

Спасибо еще раз

Автор: karakurt2
Дата сообщения: 18.09.2011 15:46
сам пользуюсь, нормальные

исходники можно скачать с сайта издательства
Автор: FuryArrow
Дата сообщения: 19.09.2011 16:01
У меня такая же проблема с линковкой, я не знаю что и где менять.
Автор: Red Planet
Дата сообщения: 21.09.2011 12:40
Molniev, спасибо. Заодно наконец-то уяснил, что begin() указывает на первый элемент.

Цитата:
bool compare_list_int(const list<int> &a, const list<int> &b) {
    if (a.size() < 2) return true;
    if (b.size() < 2) return false;
    return *( ++a.begin() ) < *( ++b.begin() );
}

Зачем следующий код?
Код: if (a.size() < 2) return true;
if (b.size() < 2) return false;
Автор: Molniev
Дата сообщения: 21.09.2011 22:40
Red Planet

Цитата:
Зачем следующий код?

Хех. А если в списке 0 элементов, то как вы будете работать с результатом .begin() (а-ля первый элемент)? А если в списке 1 элемент как вы будите работать с инкрементом (вторым элементом) от .begin()?
Стиль барьерного программирования. Лишние проверки (а иногда совсем не лишние), позволяющие снизить вероятность ошибок. Особенно при вторичном использовании кода)).

Цитата:
Закомментированные строки не работают.

Дважды хех. Итератор позволяет изменять содержимое контенера. А в вашем случае контенер константа - изменять его содержимое нельзя. Вам следует использовать константный итератор:

Код: list<int>::const_iterator lit = left.begin();
Автор: akaGM
Дата сообщения: 23.09.2011 01:14
спрошу лучше здесь...

есть VS 2008 Express

встроенный asm наотрез отказывается понимать real8
например:

_asm fld real8 ptr [esp+4];

только qword и никак иначе...
в то время как тут же рядом лежащий ml 9.0.x (из этой же установки) -- ест...
насколько они тогда совместимы и как это узнать?
и может ли кто-нибудь это проверить на более новых Сях?

у меня в VS2008 сl=15.00.30729.01
Автор: blablaman
Дата сообщения: 23.09.2011 14:14
Здраствуйте. При выполнении лабораторной работы возникла следующая проблема: при выполнении второго потока в переменную buf записываются лишние символы.
Если увеличить нашу фразу (char phrase) до 8+ символов, то эти лишние символы не записываются.
С чем это связано?



Код:
#include<Windows.h>
#include<iostream.h>
#include<stdio.h>
#define FF "lr.txt"
char lpszPipename[] = "my_pipe.txt";
char phrase[]="sample";
DWORD nBytesWrite;
DWORD WINAPI WriteThread(PVOID pvParam)
{
char buf(20);
//DWORD nBytesWrite,nBytesRead;
    int j;
/* HANDLE hNp=CreateNamedPipe("\\.\pipe\pipename",PIPE_ACCESS_DUPLEX,PIPE_TYPE_BYTE,
PIPE_UNLIMITED_INSTANCES, 40, 40, NMPWAIT_USE_DEFAULT_WAIT, NULL); */

WaitNamedPipe(lpszPipename,NMPWAIT_WAIT_FOREVER);
HANDLE hh=CreateFile(lpszPipename,
         GENERIC_WRITE,
                 FILE_SHARE_WRITE,
                 NULL,
                 OPEN_ALWAYS,
                 FILE_ATTRIBUTE_NORMAL,
                  NULL);
j=WriteFile(hh,&phrase,strlen(phrase),&nBytesWrite,NULL);
if (j==0)
        printf("Error");
    else
        printf("Success");
CloseHandle(hh);
return 0;
/* WriteFile(hNp,&phrase,strlen(phrase)+1, &nBytesWrite, NULL); */
}


DWORD WINAPI ReadThread(PVOID pvParam)
{

char *buf = new char[nBytesWrite];
int j;
DWORD nBytesRead;
WaitNamedPipe(lpszPipename,NMPWAIT_WAIT_FOREVER);
HANDLE hh=CreateFile(lpszPipename,
         GENERIC_READ,
                 FILE_SHARE_READ,
                 NULL,
                 OPEN_EXISTING,
                 FILE_ATTRIBUTE_NORMAL,
                  NULL);
j=ReadFile(hh,buf,nBytesWrite,&nBytesRead,NULL);
if (j==0)
        printf("Error");
    else
        printf("Success");
cout << endl << buf;
CloseHandle(hh);
}


main()
{

int x=0;
DWORD dwThreadId;
HANDLE h1=CreateThread(NULL,0, WriteThread,(PVOID) &x,0,&dwThreadId);
WaitForSingleObject(h1,INFINITE);
HANDLE h2=CreateThread(NULL,0, ReadThread,(PVOID) &x,0,&dwThreadId);
getchar();
/* CloseHandle(hh); */
}

Автор: Abs62
Дата сообщения: 23.09.2011 15:13
blablaman

Цитата:
j=WriteFile(hh,&phrase,strlen(phrase),&nBytesWrite,NULL);

j=WriteFile(hh,&phrase,strlen(phrase)+1,&nBytesWrite,NULL);
Завершающий ноль тоже писать надо.
Автор: ItsJustMe
Дата сообщения: 23.09.2011 18:36
Ну, скажем так, писать завершающий ноль вовсе и не обязательно, но вот буфер buf, в который из потока читается, этот ноль должен иметь, т.к. ты его как строку используешь. Так что, можно сделать так

Код: char *buf = new char[no][nBytesWrite + 1][/no]; //or long enough
...
j=ReadFile(hh,buf,nBytesWrite,&nBytesRead,NULL);
if (j)
buf[no][nBytesRead][/no] = 0;
else
printf("Error");
Автор: blablaman
Дата сообщения: 23.09.2011 19:45
Abs62, ItsJustMe, спасибо за столь быстрые разъяснения!
Автор: Master_Profi
Дата сообщения: 24.09.2011 19:02

Автор: Abs62
Дата сообщения: 24.09.2011 19:30
Master_Profi
А где break после каждого case?
Автор: Master_Profi
Дата сообщения: 24.09.2011 19:37
тьху! что-то я вообще несобранный, спасибо!
Автор: Qraizer
Дата сообщения: 25.09.2011 01:08
Master_Profi, Abs62, это вы телепатически?
Автор: akaGM
Дата сообщения: 25.09.2011 02:06
это обычная практика не признавать свои ошибки...
Автор: Master_Profi
Дата сообщения: 25.09.2011 12:02
все перерыл в интернете, ничего нормально не нашел, как запустить 2 экземпляра приложения, а на третий спрашивать запускать ли еще одно?? проблем вообще нету если надо запустить просто приложение, потом еще одно и функцией FindWindow запретить запуск второго. а вот как сделать чтобы запрещало запуск не первой копии, а второй например?? думаю FindWindow вообще тут не катит, читал тоже, что может быть риск какого-то бесконечного цикла. думаю все дело в функции EnumWindows(), но вот как с ней работать чтобы считать количество окон одного класса и после обрабатывать?
Автор: bomzzz
Дата сообщения: 25.09.2011 12:12

Цитата:
EnumWindows
вызываешь ее, на каждое совпадение она вызывает заданную подпрограмму и передает ей очередной дескриптор

Добавлено:
должны быть примеры в инете. доводилось ее один раз использовать, когда надо было вывести вплывающую подсказку на стандартный контрол ввода ИП адреса - он состоит из нескольких окон и подсказку надо лепить на каждое
Автор: Master_Profi
Дата сообщения: 25.09.2011 12:18
я не понял. я много читал об этой функции, проблема в использовании ее - это первый аргумент функции - EnumWindowsProc, вот это конкретно меня смущает.. можно как-то поподробней пожалуйста что конкретно надо делать или что куда вставлять.

bomzzz
примеры в интернете есть, но мне они не понравились, я ничего не понял конкретно, пытался методом тыка, пытался опираться на те примеры, но безрезультатно, не устраивают одним словом меня примеры, не нашел конкретного обьяснения...
Автор: bomzzz
Дата сообщения: 25.09.2011 12:22

это четыре разных окна со своими декрипторами

Добавлено:
я на масм32 программы пишу, больше ничего сказать не могу - возможно в С студии есть какой то готовый струмент для этого всего, я могу только сказать как это сделать "ручками"

Добавлено:

Цитата:

LOCAL    ti:TOOLINFO
****************
invoke EnumChildWindows,hWndIPAddress,addr EnumChild,addr ti
****************
EnumChild proc uses edi hwndChild:DWORD,lParam:DWORD
invoke TooltipProc,ThreadID,hwndChild,addr ipcontroller
ret
EnumChild endp
Автор: Master_Profi
Дата сообщения: 25.09.2011 12:53
мм...мне нужно на win32 ...мне надо туда вклинить, вот такой код вообще впервые вижу, даже в примерах такого не встречал..
Автор: bomzzz
Дата сообщения: 25.09.2011 12:57
это на MASM32, а не на С. суть то передает, я постоянно примеры на С нахожу и смотрю, понятно же как работает

Добавлено:
к тому же на масме мало народу програмируют, а на С много. поэтому ответ на вопрос проще найти у С программистов

Добавлено:
только синтаксисом отличается, а апи функции теже самые.
Автор: Master_Profi
Дата сообщения: 25.09.2011 15:01
всеравно не понимаю...ладно...
Автор: bomzzz
Дата сообщения: 25.09.2011 15:07
ну принцип главное понять. вот когда мы используем поиск файла, мы сначала ищем первый. а потом следующий, и каждый раз нам функция возвращает следующий файл. а тут немного не так, функция выдает сразу весь список, только для каждого вызывает подпрограмму и передает ей дескриптор окна.

Добавлено:
то есть тебе надо задать подпрограмму которая будет просто считать сколько раз ее вызвали да и все.
Автор: Red Planet
Дата сообщения: 25.09.2011 16:20
Molniev, спасибо. Дело было в const_iterator.
Цитата:
Лишние проверки (а иногда совсем не лишние), позволяющие снизить вероятность ошибок. Особенно при вторичном использовании кода)).
Не заработала такая проверка у меня. Но и вылетов с ошибками не было. Сортируется, пустые списки идут вперед. Да и сделал я проверки по-другому, при попытке сортировать по индексу, превышающему допустимый, сортируется по последнему. Вот код.
Код: class SortByAny {
    int elemNumber;
    public: SortByAny(int);
    int getElemNumber() const { return elemNumber; }
    bool operator()(const list<int> &, const list<int> &);
};

bool hasEmpty(const vector< list<int> > &);
int listMinSize(const vector< list<int> > &);

// ---------------------------------------------------------------------------
int _tmain (int argc, _TCHAR* argv[]) {
    system ("title Temp");

    SortByAny s(6);
    vector< list<int> > v(4, list<int>());
    v[0].push_back(12);
    v[0].push_back(79);
    v[0].push_back(5);
    v[1].push_back(7);
    v[1].push_back(2);
    v[1].push_back(25);
    v[2].push_back(3);
    v[2].push_back(5);
    v[2].push_back(1);
    v[3].push_back(2);
    v[3].push_back(3);
    v[3].push_back(5);
    v[3].push_back(1);
    v[3].push_back(2);

    cout <<"Before sort." << endl;
    for (int i = 0; i < v.size(); i++) {
        for (list<int>::iterator it = v[i].begin(); it != v[i].end(); ++it)
            cout << *it << "\t";
        cout << endl;
    }

    if (s.getElemNumber() > listMinSize(v))
        s = SortByAny(listMinSize(v)-1);

    if (!hasEmpty(v)) {
        cout << endl << "Min. list size: " << listMinSize(v) << endl
        << "Coloumn sort by: " << s.getElemNumber() << endl
        << "After sort." << endl;
        sort(v.begin(), v.end(), s);
        for (int i = 0; i < v.size(); i++) {
            for (list<int>::iterator it = v[i].begin(); it != v[i].end(); ++it)
                cout << *it << "\t";
            cout << endl;
        } // for.
    } // if.
    else
        cout << "Error! There are empty lists in vector. Fill them. " << endl;

    system ("pause");
    return 0;
}

// ---------------------------------------------------------------------------

SortByAny::SortByAny(int newNumber) {
    if (newNumber >= 0)
        elemNumber = newNumber;
    else
        elemNumber = -newNumber;
}

bool SortByAny::operator ()(const list<int> &left, const list<int> &right) {
    list<int>::const_iterator lit = left.begin();
    list<int>::const_iterator rit = right.begin();
    if (left.size() == 0) return true;
    if (right.size() == 0) return false;
    for (int i = 0; i < elemNumber; i++) {
        lit++;
        rit++;
    }
    return *lit < *rit;
}

int listMinSize(const vector< list<int> > &vl) {
    int minSize = vl[0].size();
    for (int i = 1; i < vl.size(); i++)
        if (vl[i].size() < minSize)
            minSize = vl[i].size();

    return minSize;
}

bool hasEmpty(const vector< list<int> > &vl) {
    for (int i = 0; i < vl.size(); i++)
        if (vl[i].empty())
            return true;
    return false;
}

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.