If you use c++ you can start with a std::vector. Computers are really fast. Don’t optimize prematurely. And hey, maybe you don’t need a rope. Just put std::vectors to a std::map or std::list per row of text?
Lots of problems that have an optimal complex solution can be solved with way simpler constructs in the prototyping phaze.