[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [IMP-dev] bug iterating over restraints



As ben said, don't do it. That said, it is a bug and I'll fix it.



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.

   Ben
--
                      http://salilab.org/~ben/
"It is a capital mistake to theorize before one has data."
   - Sir Arthur Conan Doyle
_______________________________________________
IMP-dev mailing list

https://salilab.org/mailman/listinfo/imp-dev