标签: vector

在C++中检查std :: vector <string>是否包含某个值

是否有内置函数告诉我我的矢量包含某个元素,例如

std::vector<string> v;
v.push_back("abc");
v.push_back("xyz");

if (v.contains("abc")) // I am looking for one such feature, is there any
                       // such function or i need to loop through whole vector?
Run Code Online (Sandbox Code Playgroud)

c++ vector std stdvector

67
推荐指数
4
解决办法
16万
查看次数

在C++中使用指向动态分配对象的指针向量时,如何避免内存泄漏?

我正在使用一个指向对象的向量.这些对象派生自基类,并且正在动态分配和存储.

例如,我有类似的东西:

vector<Enemy*> Enemies;
Run Code Online (Sandbox Code Playgroud)

我将从Enemy类派生,然后为派生类动态分配内存,如下所示:

enemies.push_back(new Monster());
Run Code Online (Sandbox Code Playgroud)

为了避免内存泄漏和其他问题,我需要注意哪些事项?

c++ pointers stl vector derived

66
推荐指数
3
解决办法
9万
查看次数

矢量擦除迭代器

我有这个代码:

int main()
{
    vector<int> res;
    res.push_back(1);
    vector<int>::iterator it = res.begin();
    for( ; it != res.end(); it++)
    {
        it = res.erase(it);
        //if(it == res.end())
        //  return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

"一个随机访问迭代器,指向函数调用擦除的最后一个元素之后的元素的新位置,如果操作擦除了序列中的最后一个元素,则为向量结束."

此代码崩溃,但如果我使用if(it == res.end())然后返回它的工作原理.怎么会?for循环是否兑现了res.end(),因此不相等的运算符失败了?

c++ iterator vector

66
推荐指数
2
解决办法
12万
查看次数

结构初始化向量

我想知道如何使用该push_back方法向我的结构向量添加值

struct subject
{
  string name;
  int marks;
  int credits;
};


vector<subject> sub;
Run Code Online (Sandbox Code Playgroud)

那么现在我该如何添加元素呢?

我有函数初始化字符串名称(主题名称)

void setName(string s1, string s2, ...... string s6)
{
   // how can i set name too sub[0].name= "english", sub[1].name = "math" etc

  sub[0].name = s1 // gives segmentation fault; so how do I use push_back method?

  sub.name.push_back(s1);
  sub.name.push_back(s2);
  sub.name.push_back(s3);
  sub.name.push_back(s4);

  sub.name.push_back(s6);

}
Run Code Online (Sandbox Code Playgroud)

函数调用

setName("english", "math", "physics" ... "economics");
Run Code Online (Sandbox Code Playgroud)

c++ struct vector push-back

66
推荐指数
4
解决办法
22万
查看次数

通过向量乘以矩阵行?

我正在优化一个函数,我想摆脱缓慢的for循环.我正在寻找一种更快的方法来将矩阵的每一行乘以一个向量.

有任何想法吗?

编辑:

我不是在寻找'经典'乘法.

例如.我有一个有23列和25行的矩阵和一个长度为23的向量.结果我想要矩阵25x23,每行乘以向量.

r vector matrix multiplication

65
推荐指数
4
解决办法
7万
查看次数

C++ 11是否允许vector <const T>?

容器需求已从C++ 03更改为C++ 11.虽然C++ 03有一揽子要求(例如复制构造性和向量的可赋值性),但C++ 11定义了每个容器操作的细粒度要求(第23.2节).

因此,只要您只执行某些不需要赋值的操作(构造并且push_back是这样的操作),您可以例如在向量中存储可复制构造但不可赋值的类型(例如具有const成员的结构).; insert不是).

我想知道的是:这是否意味着标准现在允许vector<const T>?我没有看到任何理由它不应该 - const T就像具有const成员的结构一样,是一种可复制构造但不可分配的类型 - 但我可能错过了一些东西.

(让我觉得我可能错过了一些东西的部分原因是,如果你试图实例化vector<const T>,那gcc trunk会崩溃并烧掉,但是vector<T>对于T有const成员的地方来说很好).

c++ const vector c++11

65
推荐指数
4
解决办法
1万
查看次数

Python中两个n维向量之间的角度

我需要确定Python中两个n维向量之间的角度.例如,输入可以是两个列表,如下所示:[1,2,3,4][6,7,8,9].

python vector angle

64
推荐指数
7
解决办法
11万
查看次数

3D矢量的旋转?

我有两个向量作为Python列表和一个角度.例如:

v = [3,5,0]
axis = [4,4,1]
theta = 1.2 #radian
Run Code Online (Sandbox Code Playgroud)

在围绕轴旋转v向量时获得结果向量的最佳/最简单方法是什么?

对于轴向量指向的观察者,旋转应该是逆时针的.这被称为右手规则

python vector rotation

64
推荐指数
7
解决办法
9万
查看次数

删除循环内的向量元素

我知道这个问题有类似的问题,但我没有设法通过他们的帮助找到我的代码.我只想通过检查循环内该元素的属性来删除/删除向量的元素.我怎样才能做到这一点?我尝试了以下代码,但收到了错误的模糊消息:

'operator ='功能在'播放器'中不可用.

 for (vector<Player>::iterator it = allPlayers.begin(); it != allPlayers.end(); it++)
 {
     if(it->getpMoney()<=0) 
         it = allPlayers.erase(it);
     else 
         ++it;
 }
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

更新:你认为带有指针成员的问题vector :: erase是否属于同一个问题?我需要一个赋值运算符吗?为什么?

c++ vector erase

64
推荐指数
4
解决办法
8万
查看次数

如何在Android API中使用矢量drawables 21?

我正在开发一个Android项目,我选择<vector>显示图标,因为它具有适应性和动态性,但是,我只能在运行Android的设备上运行此应用程序,该设备具有API 21或更高版本.我的问题是如何<vector>在较低的Android版本即API 14或类型上使用.谢谢!

<!-- drawable/ic_android_debug_bridge.xmlxml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="48dp"
android:width="48dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="@color/primaryColorDark"
    android:pathData="M15,9A1,1 0 0,1 14,8A1,1 0 0,1 15,7A1,1 0 0,1 16,8A1,1 `0 0,1 15,9M9,9A1,1 0 0,1 8,8A1,1 0 0,1 9,7A1,1 0 0,1 10,8A1,1 0 0,1 9,9M16.12,4.37L18.22,2.27L17.4,1.44L15.09,3.75C14.16,3.28 13.11,3 12,3C10.88,3 9.84,3.28 8.91,3.75L6.6,1.44L5.78,2.27L7.88,4.37C6.14,5.64 5,7.68 5,10V11H19V10C19,7.68 17.86,5.64 16.12,4.37M5,16C5,19.86 8.13,23 12,23A7,7 0 0,0 19,16V12H5V16Z" /></vector>`
Run Code Online (Sandbox Code Playgroud)

java android vector android-layout

63
推荐指数
7
解决办法
6万
查看次数