Каков тип данных элемента пары в векторе?

В этом коде вы не сравниваете строковые значения, вы сравниваете значения указателя. Если вы хотите сравнить строковые значения, вам нужно использовать функцию сравнения строк, такую ​​как strcmp.

if ( 0 == strcmp(var1, "dev")) {
  ..
}
0
задан Lizard Derad 18 January 2019 в 14:39
поделиться

2 ответа

Ваш учитель, вероятно, ожидал широкого спектра вещей, в том числе

char * temp = rezVector[0].first;
char *& temp = rezVector[0].first;
const char * temp = rezVector[0].first;
std::string temp = rezVector[0].first;
std::string_view temp = rezVector[0].first;

. Вам нужно будет спросить их о предполагаемой цели temp, чтобы узнать, какой (если таковой имеется) ответ они ищу.

0
ответ дан Caleth 18 January 2019 в 14:39
поделиться

Доступ к паре .first фактически дает вам ссылку на соответствующую запись, так что rezVector[0].first будет иметь тип char*&. Это позволяет вам изменить содержимое rezVector[0].first, если вы действительно хотите это сделать. Но вы также можете присвоить результат rezVector[0].first объекту типа char*, так что вы получите копию ссылочного значения.

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

См. Разницу в следующем примере:

int main() {
    char val1[] = "Hello";
    char val2[] = "World";
    char val3[] = "out there";

    vector<pair<char*, int> > rezVector; //is  vector I'm using
    rezVector.push_back({val1,10});
    cout << "initial: " << rezVector[0].first << std::endl;

    char*& tempPairFirstReadWrite = rezVector[0].first;
    tempPairFirstReadWrite = val2;
    cout << "changed: " << rezVector[0].first << std::endl;

    char* tempPairFirstReadOnly = rezVector[0].first;
    tempPairFirstReadOnly = val3;
    cout << "not changed again: " << rezVector[0].first << std::endl;

}

Выход: [1111 ]

initial: Hello
changed: World
not changed again: World
0
ответ дан Stephan Lechner 18 January 2019 в 14:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: