#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。我想知道每个时刻我得到的每种类型,功能等。
答案 0 :(得分:1)
变量tempVec
在create_vec
函数内是本地的。当函数返回时,矢量对象被破坏,留下迭代器到不再存在的东西。当您尝试使用迭代器时,这会导致未定义的行为。
不是create_vec
函数返回向量的目的吗?该函数的名称表明它应该这样做。