C++ for循环c+中的变量范围+;奇怪的行为

C++ for循环c+中的变量范围+;奇怪的行为,c++,copy-constructor,stdmap,C++,Copy Constructor,Stdmap,我在for循环中声明了一个变量,在第二次迭代中,该变量在声明之前仍然存在。这是密码 std::map<std::string,Schema> schemas; std::vector<std::string> schemaFolders = fileUtil.getSubFolders(BASE_FOLDER); for(int i = 0; i < schemaFolders.size(); i++){ std::string folde

我在for循环中声明了一个变量,在第二次迭代中,该变量在声明之前仍然存在。这是密码

std::map<std::string,Schema> schemas;
std::vector<std::string> schemaFolders = fileUtil.getSubFolders(BASE_FOLDER);

  for(int i = 0; i < schemaFolders.size(); i++){
          std::string folder(BASE_FOLDER);
          folder += "/";
          folder += schemaFolders[i];
          Schema  schema(folder);
          schema->loadDatabases();
          schemas[schemaFolders[i]] =  schema;
          std::cout<<std::endl<<schemas[schemaFolders[0]].getSchemaFolder()<<std::endl;
  }
和Equals运算符

Schema & Schema::operator=(const Schema& other){
    this->schemaFolder = other.schemaFolder;
    this->databases =  other.databases;
    this->curDb = other.curDb;

    return *this;
}

请注意,调试日志输出总是索引
0
,而不是
i
应该工作吗?请发布您的
Schema&operator=(const Schema&)的实现也是。在这里发布问题之前提取一个最小的示例。请参见,我添加了equals操作符。cout向我展示了与第一个schemaFolder对应的键一起存储的模式值在每次迭代中是如何变化的(这是我无法理解的)
Schema::Schema( const Schema& other ){
    this->schemaFolder = other.schemaFolder;
    this->databases =  other.databases;
    this->curDb = other.curDb;

}
Schema & Schema::operator=(const Schema& other){
    this->schemaFolder = other.schemaFolder;
    this->databases =  other.databases;
    this->curDb = other.curDb;

    return *this;
}