On Aug 13, 2008, at 8:41 AM, Ben Webb wrote:
> Keren Lasker wrote: >> For some reason iterating over restraints like: >> for(Restraints::iterator it = opt_mdl->get_restraints().begin(); >> it != opt_mdl->get_restraints().end(); it++) { >> } > > Don't do that! At best, that's going to make a copy of your restraints > vector, then iterate over that. (But since you call get_restraints > twice, you're going to get two different copies, and the iteration > probably won't work at all.) Instead, do: > > for(Model::RestraintIterator it = opt_mdl->restraints_begin(); > it != opt_mdl->restraints_end(); ++it) { > > to iterate over the original vector. > > Daniel added get_restraints() for the Python interface, but you > shouldn't use it for C++ code. Eventually I will get rid of it > entirely, > and have the Python interface access the original vector (not a > copy) as > well. As Ben said, don't do that. That said, it sounds like a bug may have worked its way in there. I'll look into it.