Почему мой компилятор имеет проблему с памятью для вектора строкового типа c? - PullRequest
0 голосов
/ 26 января 2019

Почему я не могу создать вектор c строковым временем. Когда я создаю его, мой компилятор создает проблему с памятью.

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<char[32]> buffVector;
    return 0;
}

1 Ответ

0 голосов
/ 26 января 2019

С https://en.cppreference.com/w/cpp/container/vector:

T должно соответствовать требованиям CopyAssignable и CopyConstructible .

Причина, по которой вы не можете использовать vector<char[32]>, заключается в том, что char[32] не является ни CopyAssignable , ни CopyConstructible .

Вы можетеНе используйте:

char a[32];
char b[32];

a = b;           // Can't assign an array to another.
char c[32] = b;  // Can't initialize an array using another.

К счастью, есть легкий обходной путь.Вы можете обернуть массив в struct и использовать вместо него vector из struct.

struct foo { char array[32]; };
std::vector<foo> v; // OK.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...