在矢量中平方值

时间:2013-10-21 20:52:41

标签: c++ vector

我被要求创建一个调用函数void square(vector<int> &v)的函数,该函数对向量v中的每个整数进行平方。这是我的,但我不断收到编译错误。 非常感谢任何帮助

#include<iostream>
#include<vector>
#include<string>
using namespace std;

void square(vector<int> &v)
{
  for(int i=0; i<v.size(); i++){
    v = v[i]*v[i];
  }
}

这是我的补偿错误:

'void square(std::vector<int>&)':
editor.cpp:11:13: error: no match for 'operator=' in 'v = ((& v)->std::vector<_Tp, _Alloc>::operator[]<int, std::allocator<int> >(((std::vector<int>::size_type)i)) * (& v)->std::vector<_Tp, _Alloc>::operator[]<int, std::allocator<int> >(((std::vector<int>::size_type)i)))'
editor.cpp:11:13: note: candidate is:
In file included from /usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../include/c++/4.7.1/vector:70:0,
                 from editor.cpp:3:
/usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../include/c++/4.7.1/bits/vector.tcc:161:5: note: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>]
/usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../include/c++/4.7.1/bits/vector.tcc:161:5: note:   no known conversion for argument 1 from 'int' to 'const std::vector<int>&'

3 个答案:

答案 0 :(得分:3)

  1. 您正在尝试将整数分配给矢量。
  2. size是一种类方法,应该称为v.size()
  3. 这是一个有效的代码:

    void square(vector<int> &v)
    {
      for(int i=0; i<v.size(); i++){
        v[i] = v[i]*v[i];
      }
    }
    

答案 1 :(得分:0)

我认为问题在于:

i<v.size

sizestd::vector中的成员函数,而不是字段。尝试将表达式更改为

i < v.size()

希望这有帮助!

答案 2 :(得分:0)

实际上你需要纠正这两个问题:

v.size

应该是

v.size()

并且重新分配应该是

v [i] = v [i] * v [i];