Я пытаюсь заполнить массивы, начиная с начальных значений (местоположение в пространстве XYZ) и двигаться вперед в пространстве с помощью дискретного шага, чтобы заполнить 3D-поле.
Я не могу найти решение для этого сообщения об ошибке где-нибудь подобное.Большинство ответов на аналогичный вопрос связаны с синтаксической ошибкой.Может быть, мой тоже, я все еще относительно новичок в C и C ++.
Я пытался привести i к int при индексации в x_array, и он просто выдает еще более загадочную ошибку:
error: no operator "=" matches these operands operand types are: std::vector<float, std::allocator<float>> = float
Вот мой код:
atom_box build_box(
vector<xyz_coords> all_atom_coords, vector<string> all_atom_names, vector<float> box_origin_coords,
map<string, float> p_charge_map, map <string, float> solv_access_map,
int box_size = 20, const int channels = 7, float voxel = 1.0)
{
float x1,x2, y1,y2, z1,z2; // first and last values of the box
const int x_dim = box_size, y_dim = box_size, z_dim = box_size;
atom_box box(channels, x_dim, y_dim, z_dim);
map<char,int> atom_chann_map = { {'N', 0}, {'C', 1}, {'O', 2}, {'S', 3}, {'H', 4} };
float delta = box_size/2.0;
//cout << "Delta: " << delta << endl;
x1 = box_origin_coords[0] - delta; x2 = box_origin_coords[0] + delta;
y1 = box_origin_coords[1] - delta; y2 = box_origin_coords[1] + delta;
z1 = box_origin_coords[2] - delta; z2 = box_origin_coords[2] + delta;
int size = (x2 - x1)/voxel + 1;
vector<float> x_range[size], y_range[size], z_range[size];
for (float i = 0, x = x1, y = y1, z = z1;
i < size;
i++, x += voxel, y += voxel, z += voxel)
{
x_range[i] = x; y_range[i] = y; z_range[i] = z;
}
return box;
}