C++里的push_back函数对对象怎么操作?
puch_back对普通类型变量的操作我看懂了,比如puch_back(5)如果是vector<int>的话就是在容器底部插入一个数值为5的元素,可是如果是类呢?比如我有...
puch_back对普通类型变量的操作我看懂了,比如puch_back(5)如果是vector<int>的话就是在容器底部插入一个数值为5的元素,可是如果是类呢?比如我有一个
class A
{
int x;
double y;
char c;
float d;
};
这么一个类,那我要用push_back要怎么写?比如我要插入一个int为5,double为6.0,char为'a',float为3.0的一个A类型的元素,那应该怎么写呢?麻烦高手解答下,谢谢。 展开
class A
{
int x;
double y;
char c;
float d;
};
这么一个类,那我要用push_back要怎么写?比如我要插入一个int为5,double为6.0,char为'a',float为3.0的一个A类型的元素,那应该怎么写呢?麻烦高手解答下,谢谢。 展开
3个回答
展开全部
A a;
a.x = 5;
a.y = 6.0;
a.c = 'a';
a.d = 3.0;
vector<A> vec_a;
vec_a.push_back(a);
另外也可以用指针
A* pa = new A;
pa.x = 5;
pa.y = 6.0;
pa.c = 'a';
pa.d = 3.0;
vector<A*> vec_a;
vec_a.push_back(pa);
/*其他代码*/
/*注意释放指针,并避免重复释放*/
for (size_t i = 0; i < vec_a.size(); ++i)
{
delete vec_a[i];
vec_a[i] = NULL;
}
vec_a.clear()
a.x = 5;
a.y = 6.0;
a.c = 'a';
a.d = 3.0;
vector<A> vec_a;
vec_a.push_back(a);
另外也可以用指针
A* pa = new A;
pa.x = 5;
pa.y = 6.0;
pa.c = 'a';
pa.d = 3.0;
vector<A*> vec_a;
vec_a.push_back(pa);
/*其他代码*/
/*注意释放指针,并避免重复释放*/
for (size_t i = 0; i < vec_a.size(); ++i)
{
delete vec_a[i];
vec_a[i] = NULL;
}
vec_a.clear()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在A类中添加一个构造函数初始化数据成员。在push_back(A(5, 6.0, 'a', 3.0));
class A {
char c;
int i;
float f;
double d;
public:
A(char cc, int ii, float ff, double dd) {
c = cc;
i = ii;
f = ff;
d = dd;
}
};
int main() {
std::vector<A> v;
v.push_back(A('a', 5, 3.0f, 6.0)); //A('a', 5, 3.0f, 6.0) 作用是调用构造函数来建立一个 //临时对象,这是临时对 象创建语法。
}
这样写简单点:
#include <iostream>
#include <vector>
class A {
char c = 'a';
int i = 5;
float f = 3.0;
double d = 6.0;
public:
A() = default;
A(char cc, int ii, float ff, double dd) : c(cc),
i(ii), f(ff), d(dd) {}
operator int() const {
return i;
}
operator char() const {
return c;
}
operator float() const {
return f;
}
operator double() const {
return d;
}
};
int main() {
std::vector<A> v;
v.push_back(A());
std::cout << char(v[0]) << std::endl;
std::cout << int(v[0]) << std::endl;
std::cout << float(v[0]) << std::endl;
std::cout << double(v[0]) << std::endl;
}
此段代码的运行结果是:
a
5
3
6
class A {
char c;
int i;
float f;
double d;
public:
A(char cc, int ii, float ff, double dd) {
c = cc;
i = ii;
f = ff;
d = dd;
}
};
int main() {
std::vector<A> v;
v.push_back(A('a', 5, 3.0f, 6.0)); //A('a', 5, 3.0f, 6.0) 作用是调用构造函数来建立一个 //临时对象,这是临时对 象创建语法。
}
这样写简单点:
#include <iostream>
#include <vector>
class A {
char c = 'a';
int i = 5;
float f = 3.0;
double d = 6.0;
public:
A() = default;
A(char cc, int ii, float ff, double dd) : c(cc),
i(ii), f(ff), d(dd) {}
operator int() const {
return i;
}
operator char() const {
return c;
}
operator float() const {
return f;
}
operator double() const {
return d;
}
};
int main() {
std::vector<A> v;
v.push_back(A());
std::cout << char(v[0]) << std::endl;
std::cout << int(v[0]) << std::endl;
std::cout << float(v[0]) << std::endl;
std::cout << double(v[0]) << std::endl;
}
此段代码的运行结果是:
a
5
3
6
来自:求助得到的回答
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询