小编ban*_*ong的帖子

如何在AWS Marketplace中查找CentOS 7映像的AMI ID?

我已经通过登录AWS站点启动EC2实例,点击"启动"按钮并遵循禁止的步骤.现在我想从Ansible脚本启动实例,为此我想(我想)需要我想要启动的图像的AMI ID.

问题是我正在从"市场"发布图像,但我找不到AMI ID.特别是我正在使用Centos 7图像.这很容易在网页界面找到,只是去市场搜索"centos",我想要的图像是第一个找到的图像,但提供的图像信息似乎不包括我的AMI ID需要从脚本启动它.解决方法是手动启动映像,然后在检查正在运行的映像时,会给出AMI ID.但有没有更容易找到它的方法?

amazon-ec2 amazon-web-services centos7 amazon-ami

21
推荐指数
4
解决办法
2万
查看次数

c ++向量不像数组

我已经开始使用c ++几个月了,并且已经被谷歌指导到堆栈溢出大部分时间用于c ++查询.我经常注意到"你为什么不使用矢量"这一类型的劝诫,并且受到了启发,只是为了做到这一点.

因此,主要是为了获得自动内存释放的微小优势,并能够编写用于排序的类型化比较函数.我将一个指向对象的数组切换为一个向量.现在我想(似乎不正确)矢量可以或多或少地像数组一样使用,因此我初步化了:

cluster  clusters[LOTS];
vector<cluster *> pclust;
pclust.reserve(numClust);
for (int i=0; i<numClust; ++i)
    pclust[i] = clusters + i;
Run Code Online (Sandbox Code Playgroud)

没有来自编译器的投诉.然后一段时间后我需要在集群对象的某个属性上对向量进行排序.所以:

std::sort(pclust.begin(), pclust.end(), ClusterCompareNumSegs);
Run Code Online (Sandbox Code Playgroud)

再次编译没有问题.除了矢量没有得到排序.事实证明,vector.size()为零,当然我的初始化应该是

pclust.push_back(clusters + i);
Run Code Online (Sandbox Code Playgroud)

现在这很容易解决,但我很困惑,因为最初的错误分配工作正常.我成功迭代了向量 - 使用数组语法,如下所示:

for (clustind=0; clustind < numClust; ++clustind) {<br>
    cluster *cl = pclust[clustind];
    ...happily access *cl...
Run Code Online (Sandbox Code Playgroud)

这一切都很好.所以我只是想知道发生了什么.据推测,在我最初的任务中,我试图访问尚未在向量中的元素(我试图将它们放入),并且向量抛出了我忽略的异常.但是,在引用位置时,指针就在那里.任何人都可以提供启发吗?

c++

7
推荐指数
2
解决办法
419
查看次数

c ++在析构函数中删除向量类成员内存

我有一个包含vector成员变量的类.我知道当它们超出范围时,存储在堆栈中的向量将被清除(即内存空闲),但我不确定类对象的破坏 - 包含向量成员变量 - 是否被认为是超出范围.

如果不是,那么破坏向量的适当方法是什么?

例如:

class fred {
    char *stuff;
    vector<int> v;

    fred() : stuff(), v() {}
    ~fred() {
         if (stuff) free(stuff);
         // now how do I clear up the vector v?  Will it be done automatically?
    }
 }
Run Code Online (Sandbox Code Playgroud)

c++ memory-management vector

3
推荐指数
2
解决办法
3793
查看次数