以下代码无效:
$user = new User(1);
foreach($user as $key => $value){
echo $key.' = '.$value.'<br>';
}
我应该如何初始化它?
答案 0 :(得分:1)
我没有看到矢量动态分配的意义,但正确的语法看起来像
#include <iostream>
#include <vector>
int main()
{
std::vector<std::vector<int> > *pv = new std::vector<std::vector<int> >;
pv->push_back( std::vector<int>( 1, 10 ) );
std::cout << ( *pv )[0][0] << std::endl;
delete pv;
}
输出
10
答案 1 :(得分:0)
std::vector<std::vector<int>>* te = new std::vector<std::vector<int>>();
这一行不是你的问题。但是,它确实提出了问题“为什么要动态分配std::vector
?”
(*te)[0].push_back(10);
这一行是你的问题。您正在访问te
的0 th 索引,但它是空的(即,执行此操作会调用未定义的行为)。您需要先添加一些内容:te->push_back(std::vector<int>());
。
#include <iostream>
#include <vector>
int main()
{
std::vector<std::vector<int>>* te = new std::vector<std::vector<int>>();
// Add an empty `vector` to `te`
te->push_back(std::vector<int>());
// Add `10` to the first `vector` in `te` and print it
(*te)[0].push_back(10);
std::cout << (*te)[0][0];
delete te;
return 0;
}
注意:您还应该养成使用智能指针的习惯,而不必担心手动新建和删除内存(例如std::unique_ptr
指针和std::make_unique
)。