HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 27.01.2021, 00:29
checkdasound
Постоянный
Регистрация: 12.01.2018
Сообщений: 963
С нами: 4387250

Репутация: 133


По умолчанию

Есть двумерный вектор, нужно узнать, входит ли в него определенная строка или нет.

C++:





Код:
std
::
string str
=
"asd"
;
std
::
vector
>
vec
;


В обычном векторе использовал find, думаю, для двумерного тоже надо использовать это, только не могу допереть как именно.
 
Ответить с цитированием

  #2  
Старый 27.01.2021, 00:31
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от checkdasound  

Есть двумерный вектор, нужно узнать, входит ли в него определенная строка или нет.

C++:





Код:
string str
=
"asd"
;
std
::
vector
>
vec
;


В обычном векторе использовал find, думаю, для двумерного тоже надо использовать find, только не могу допереть как.
C++:





Код:
for
(
auto
&
i
:
vec
)
{
if
(
auto
fnd
=
i
.
find
(
string
)
;
fnd
!=
i
.
end
(
)
)
{
// Ну типа тут твой код окда
}
}
 
Ответить с цитированием

  #3  
Старый 27.01.2021, 00:41
checkdasound
Постоянный
Регистрация: 12.01.2018
Сообщений: 963
С нами: 4387250

Репутация: 133


По умолчанию

Цитата:
Сообщение от KiN4StAt  

C++:





Код:
for
(
auto
&
i
:
vec
)
{
if
(
auto
fnd
=
i
.
find
(
string
)
;
fnd
!=
i
.
end
(
)
)
{
// Ну типа тут твой код окда
}
}

на i.find ругается:

Ошибка E0135 class "std::vector>" не содержит члена "find"
 
Ответить с цитированием

  #4  
Старый 27.01.2021, 00:56
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от checkdasound  

на i.find ругается:
Ошибка E0135 class "std::vector>" не содержит члена "find"
тоды попробуй вот так:

C++:





Код:
#include 
#include 
for
(
auto
&
i
:
vec
)
{
if
(
auto
fnd
=
std
::
find
(
i
.
begin
(
)
,
i
.
end
(
)
,
str
)
;
fnd
!=
std
::
end
(
i
)
)
{
// Ну типа тут твой код окда
}
}
 
Ответить с цитированием

  #5  
Старый 27.01.2021, 00:44
Vintik
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами: 4598023

Репутация: 183


По умолчанию

Цитата:
Сообщение от checkdasound  

Есть двумерный вектор, нужно узнать, входит ли в него определенная строка или нет.

C++:





Код:
std
::
string str
=
"asd"
;
std
::
vector
>
vec
;


В обычном векторе использовал find, думаю, для двумерного тоже надо использовать это, только не могу допереть как именно.
Ну если вариант "в лоб", то можно:

C++:





Код:
bool
isStringInVector
(
vector
>
yourVector
,
string yourString
)
{
for
(
vector

w
:
yourVector
)
{
for
(
string y
:
w
)
{
if
(
y
==
yourString
)
{
return
true
;
}
}
}
return
false
;
}


В твоём случае перед всеми словами vector и string допиши std::
 
Ответить с цитированием

  #6  
Старый 27.01.2021, 00:46
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от Vintik  

Ну если вариант "в лоб", то можно:

C++:





Код:
bool
isStringInVector
(
vector
>
v
)
{
for
(
vector

int
w
:
v
)
{
for
(
string y
:
w
)
{
if
(
y
==
"твоя строка"
)
{
return
true
;
}
}
}
return
false
;
}

копировать вектор векторов при передаче в функцию, потом копировать вложенный вектор при итерации по вектору векторов, потом еще и копирование строки при итерации по вектору. Красава. 146 динамических аллокаций из 10
 
Ответить с цитированием

  #7  
Старый 27.01.2021, 00:48
Vintik
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами: 4598023

Репутация: 183


По умолчанию

Цитата:
Сообщение от KiN4StAt  

копировать вектор векторов при передаче в функцию, потом копировать вложенный вектор при итерации по вектору векторов, потом еще и копирование строки при итерации по вектору. Красава. 146 динамических аллокаций из 10
Понятно... По факту.

C++:





[CODE]
bool
isStringInVector
(
vector
>
&
yourVector
,
string
&
yourString
)
{
for
(
int
w
=
0
;
w



Устраивает?
 
Ответить с цитированием

  #8  
Старый 27.01.2021, 00:49
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

[QUOTE="Vintik"]

Понятно... По факту.

C++:





[CODE]
bool
isStringInVector
(
vector
>
&
yourVector
,
string
&
yourString
)
{
for
(
int
w
=
0
;
w
 
Ответить с цитированием

  #9  
Старый 28.01.2021, 19:28
checkdasound
Постоянный
Регистрация: 12.01.2018
Сообщений: 963
С нами: 4387250

Репутация: 133


По умолчанию

Мне нужно организовать файл с информацией, сформированной по секциям и подсекциям. Я выбрал JSON, а для работы с ним выбрал библиотеку nlohmann/json.

Цитата:
Сообщение от Спойлер  

Не уверен, что структуру правильно составил, первый раз работаю с этим форматом.

Мне нужно будет вынести информацию только для конкретного сервера, например server1.

Тоесть вынести все группы конкретного сервера и их содержимое в двумерный массив, std::vector> groupColors.

groupColors = j["server1"], вот как это сделать? (j - это nlohmann::json)

JSON:





Код:
{
"server1"
:
{
"group1"
:
{
"color1"
:
"FFАААА"
,
"color2"
:
"FFAAFF"
,
"color2"
:
"FFFFFF"
}
,
"group2"
:
{
"color1"
:
"FFАААА"
,
"color2"
:
"FFFFFF"
}
}
,
"server2"
:
{
"group1"
:
{
"color1"
:
"FFАААА"
,
"color2"
:
"FFFFFF"
}
,
"group2"
:
{
"color1"
:
"FFАААА"
,
"color2"
:
"FFFFFF"
}
}
}


 
Ответить с цитированием

  #10  
Старый 28.01.2021, 21:20
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

Цитата:
Сообщение от checkdasound  

Мне нужно организовать файл с информацией, сформированной по секциям и подсекциям. Я выбрал JSON, а для работы с ним выбрал библиотеку nlohmann/json.

Цитата:
Сообщение от Спойлер  

Не уверен, что структуру правильно составил, первый раз работаю с этим форматом.

Мне нужно будет вынести информацию только для конкретного сервера, например server1.

Тоесть вынести все группы конкретного сервера и их содержимое в двумерный массив, std::vector> groupColors.

groupColors = j["server1"], вот как это сделать? (j - это nlohmann::json)

JSON:





Код:
{
"server1"
:
{
"group1"
:
{
"color1"
:
"FFАААА"
,
"color2"
:
"FFAAFF"
,
"color2"
:
"FFFFFF"
}
,
"group2"
:
{
"color1"
:
"FFАААА"
,
"color2"
:
"FFFFFF"
}
}
,
"server2"
:
{
"group1"
:
{
"color1"
:
"FFАААА"
,
"color2"
:
"FFFFFF"
}
,
"group2"
:
{
"color1"
:
"FFАААА"
,
"color2"
:
"FFFFFF"
}
}
}


GitHub - nlohmann/json: JSON for Modern C++

JSON for Modern C++. Contribute to nlohmann/json development by creating an account on GitHub.

github.com
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.