关于 STL 中 vector 的初始化问题

2014-08-05 17:33:35 +08:00
 razrlele
我首先定义了一个结构体
struct operator{
int x;
int y;
char o;
}operator;

然后用vector定义了一个结构体数组
int N;
cin >> N;
vector<operator> a(N);

然后在一个自定义函数里面把结构体数组当作形参

void function(vector<operator>& a)

我知道我错了。。。但是具体错在哪里,求指正。。
1662 次点击
所在节点    C
31 条回复
lehui99
2014-08-05 17:38:49 +08:00
struct operator{
...
}operator;

变量名和结构体名冲突?
razrlele
2014-08-05 17:47:53 +08:00
@lehui99 应该不是吧,这样好像没有问题啊

改了一样报错
lehui99
2014-08-05 17:50:43 +08:00
@razrlele operator是c++关键字,把operator的地方都改掉先。
razrlele
2014-08-05 17:52:01 +08:00
@lehui99 啊。。这个地方我只是一个示范,代码里面写的不是operator,是operate
bombless
2014-08-05 17:53:54 +08:00
operator是一个保留字你不能用它做标识符。
还有你function这个名字也最好改改,因为有个std::function类模板存在于C++11的标准库中。
acros
2014-08-05 17:54:00 +08:00
一楼对的吧。

struct CA{

//......

} ca;


编译没错啊。
lehui99
2014-08-05 17:55:32 +08:00
@razrlele 我改成
struct operate1{
int x;
int y;
char o;
}operate2;
测试了,我这里完全没问题。

说明你在其他地方错了。
bombless
2014-08-05 17:56:38 +08:00
话说你定义变量a时那个N是做什么。你是想用std::array而不是std::vector对不对?
razrlele
2014-08-05 17:57:17 +08:00
@bombless
@acros
啊啊,准确来说我这里写的是伪代码,我还是把真正的代码贴出来吧
acros
2014-08-05 17:57:41 +08:00
难道楼主是弄混了
typedef {...} structA;
struct structA{ ... } ;
struct { ... } structA;
这几种?
bombless
2014-08-05 17:58:52 +08:00
@acros 同疑惑,我开始还在想是不是漏写了typedef
razrlele
2014-08-05 17:59:02 +08:00
chmlai
2014-08-05 18:00:53 +08:00
很久没碰 CPP 了, 好像是:
vector<struct operator> a;
或者
typedef struct operator{...} operator;
vector<operator> a;
acros
2014-08-05 18:03:15 +08:00
@razrlele
你取值方法错了···=_=

你要对元素操作,不是对vector对象操作。
razrlele
2014-08-05 18:04:34 +08:00
@acros 能不能具体一点?
acros
2014-08-05 18:05:17 +08:00
@razrlele 传函数前你已经从vector取过值了,函数形参是coor&
bombless
2014-08-05 18:06:10 +08:00
没发现哪里要用vector,所有的vector那里都要去掉吧。
lehui99
2014-08-05 18:06:27 +08:00
@razrlele

void R(vector<coor>& a)
{
if(a.o == 'N')
a.o = 'E';
...

a是个数组,哪有.o属性……
至少得加个下标吧,a[i].o
acros
2014-08-05 18:07:05 +08:00
@bombless
三个函数替换成:
void L(coor& a)
void R(coor& a)
void F(coor& a ,int A, int B)

这下明白了吧···
bombless
2014-08-05 18:07:39 +08:00
哦,大概理解这里的逻辑了,给每个操作vector的函数加一个for循环吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/126255

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX