
27.01.2021, 00:29
|
|
Постоянный
Регистрация: 12.01.2018
Сообщений: 963
С нами:
4387250
Репутация:
133
|
|
Есть двумерный вектор, нужно узнать, входит ли в него определенная строка или нет.
C++:
Код:
std
::
string str
=
"asd"
;
std
::
vector
>
vec
;
В обычном векторе использовал find, думаю, для двумерного тоже надо использовать это, только не могу допереть как именно.
|
|
|

27.01.2021, 00:31
|
|
Флудер
Регистрация: 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
(
)
)
{
// Ну типа тут твой код окда
}
}
|
|
|

27.01.2021, 00:41
|
|
Постоянный
Регистрация: 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"
|
|
|

27.01.2021, 00:56
|
|
Флудер
Регистрация: 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
)
)
{
// Ну типа тут твой код окда
}
}
|
|
|

27.01.2021, 00:44
|
|
Познавший АНТИЧАТ
Регистрация: 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::
|
|
|

27.01.2021, 00:46
|
|
Флудер
Регистрация: 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
|
|
|

27.01.2021, 00:48
|
|
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами:
4598023
Репутация:
183
|
|
Сообщение от KiN4StAt
копировать вектор векторов при передаче в функцию, потом копировать вложенный вектор при итерации по вектору векторов, потом еще и копирование строки при итерации по вектору. Красава. 146 динамических аллокаций из 10
Понятно... По факту.
C++:
[CODE]
bool
isStringInVector
(
vector
>
&
yourVector
,
string
&
yourString
)
{
for
(
int
w
=
0
;
w
Устраивает?
|
|
|

27.01.2021, 00:49
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
[QUOTE="Vintik"]
Понятно... По факту.
C++:
[CODE]
bool
isStringInVector
(
vector
>
&
yourVector
,
string
&
yourString
)
{
for
(
int
w
=
0
;
w
|
|
|

28.01.2021, 19:28
|
|
Постоянный
Регистрация: 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"
}
}
}
|
|
|

28.01.2021, 21:20
|
|
Флудер
Регистрация: 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)
|
|
|
|