C ++向量和函数 - 无法使程序工作。需要帮忙,

时间:2017-06-01 03:38:35

标签: c++ function stl

嘿,伙计们?我是整个C ++标准库的新手,但对于我的魔鬼,我无法弄清楚为什么这个程序没有给我输出我希望。

#include <iostream>
#include <vector>
#include <iterator>

/*
create_vec should initialise my vector and return an iterator pointing to 
it.
*/
template <typename s>
  typename std::vector<s>::iterator create_vec(s var) {
     std::vector<s> tempVec;
     tempVec.push_back(var);
     auto itr = tempVec.begin();
     return itr;
}

int main() {
   std::vector<int>::iterator itr = create_vec<int>(148);
   std::cout << *itr << "was passed." << std::endl;
   return 0;
   }

O / P:0被传递给create vec函数

p.s忽略所有std。我想知道每个时刻我得到的每种类型,功能等。

1 个答案:

答案 0 :(得分:1)

变量tempVeccreate_vec函数内是本地的。当函数返回时,矢量对象被破坏,留下迭代器到不再存在的东西。当您尝试使用迭代器时,这会导致未定义的行为

不是create_vec函数返回向量的目的吗?该函数的名称表明它应该这样做。