如何在c++中使用引用实现类似python的行为
How to achieve python-like behavior with references in c++?
在python中,如果我这样做:
a = []
b = a
a.append(1)
b[0] == 1
这很好,因为a和b都指向堆上的底层对象。
等效的C++代码是什么?
等效的C++代码是什么?
以下是一个不错的翻译:
std::vector<int> a;
auto& b = a;
a.push_back(1);
b[0] == 1;
具有引用语义的关键是使用引用变量。
您可以使用shared_ptr:所有副本都是操作数据的单个实例。您将能够为操作重新分配新实例(这比引用更好(。
虽然由于引用的简单性,在可能的情况下应该首选引用,但为了完整起见,这里有一个带有共享指针的解决方案:
#include <iostream>
#include <memory>
#include <vector>
int main()
{
auto a = std::make_shared<std::vector<int>>();
auto b = a;
a->push_back(1);
std::cout << "This is One: " << (*b)[0] << "n";
}
是的,与python相比,c++在琐碎的事情上看起来真的很糟糕。。。至少我们现在有了"auto",以避免在这种情况下重复键入:std::shared_ptr<std::vector<int>>
。
相关文章:
- 如何在c++中使用引用实现类似python的行为
- 我如何在C++像在 Python 中一样实现 f 字符串?
- 如何使用列表/数组在C++中实现 Python "... not in ..."?
- 在C++中实现类似 python "map"函数的问题:调用类成员函数
- 在 c++ 或 python 中生成一个体面的视差图以在 Raspberry Pi 上实现的最佳方法(算法或函数)是什么
- 如何创建一个接口,允许我访问C++中的按钮(和其他ui)函数,该函数是使用python中的MFC实现的
- 了解C++中的pop_heap,以便在 Python 中实现
- 如何为C++库实现 Python 接口
- C++ 和 Python 实现之间的不同伪随机数
- 为什么 C++ 代码实现的性能不比 python 实现更好?
- 有没有办法在C++中实现 Python 的 join()?
- 如何在python中实现CRTP功能
- 在C 中实现Python np.fromstring()
- 使用L1CPUCache实现c++算法的Python
- 在C++中实现类似 Python 的列表
- 如何实现 <Obj>Cython 的向量<向量>(C++ 到 Python)?
- 如何在Python中实现ITK映像和SimpleItk图像之间的转换
- Google Protobuf基于C++的python实现的性能
- 如何在 python 中实现 c++ 类型结构
- 如何将用C++编写的Qt4小部件实现到一些Python代码中