1.VECTOR的相关操作:

本文详细介绍了C++标准库中的Vector容器的基本操作,包括插入、删除、遍历等,并通过实例展示了如何使用这些方法来处理不同数据类型。

对vector这个方法的总结:

往vector中插入数据:push_back(要插入的数据)

打印vector中元素的个数:size()

遍历vector中的元素:at()

取出元素:back()

删除元素:pop_back();(只能从后面删除)

#include <iostream>

using namespace std;
#include <vector>
#include "Stu.h"


struct Teacher{
int age;
};


void fx() {
Teacher t1;
t1.age = 10;
Teacher t2;
t2.age = 20;


vector<Teacher> v;
v.push_back(t1);
v.push_back(t2);


Teacher t = v.at(1);//t2
cout<<t.age<<endl; //20
}






void f() {
Stu stu1(10);
Stu stu2(20);
Stu stu3(30);


vector<Stu> v;
v.push_back(stu1);//0
v.push_back(stu2);//1
v.push_back(stu3);//2


for (unsigned int i = 0; i < v.size(); i++) {
Stu stu = v.at(i);
cout<<stu.age<<endl;
}
}


void f0() {
//创建长度为0的只装int数据的vector v1对象
vector<int> v1;    //创建长度为0只装int数据类型的对象
//装数据
v1.push_back(3);//0    //vector 相当于数组,存进去的数据依次是 3 1 2
v1.push_back(1);//1
v1.push_back(2);//2
//取出长度
int size = v1.size();//size==3   用size取出数组的长度
// cout<<size<<endl;
//取数数据有下面两种方法
// cout<<v1.at(0)<<endl;//3
// cout<<v1[0]<<endl;   //3


for (int i = 0; i < size; i++) {
cout << v1[i] << endl;
cout << v1.at(i) << endl;
}
}


void f1() {
//创建长度为2的只装int数据的vector v1对象,默认值为0   每次插入一个往后面加
vector<int> v1(2);//[0][0]
// cout<<v1.size()<<endl;//2
// cout<<v1[0]<<":"<<v1[1]<<endl;//0:0
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);//   本来有两个0,插入两个,一共5个元素 [0][0][1][2][3]


size_t size = v1.size();//5
for (size_t i = 0; i < size; i++) {
cout << "v1[" << i << "]=" << v1[i] << endl;
}
}


void f2() {
//创建长度为3的只装string数据的vector v1对象,默认值为"好"
vector<string> v(3, "好");
v.push_back("你好");
size_t size = v.size();
for (size_t i = 0; i < size; i++) {
cout << "v1[" << i << "]=" << v[i] << endl;
}
}
void f3() {
int ia[6] = { -2, -1, 0, 1, 2, 1024 };
//使用数据为新创建的vector对象赋值  后面的1024没有什么作用
vector<int> v1(&ia[2], &ia[5]);//[0][1][2]
for (size_t i = 0; i < v1.size(); i++) {
cout << "v1[" << i << "]=" << v1[i] << endl;
}
cout << "v2=================" << endl;
//克龙  
vector<int> v2(v1);   //里面装的对象,用拷贝构造函数
for (size_t i = 0; i < v2.size(); i++) {
cout << "v2[" << i << "]=" << v2[i] << endl;
}
cout << "v3=================" << endl;
//克龙
vector<int> v3 = v2;
for (size_t i = 0; i < v3.size(); i++) {
cout << "v3[" << i << "]=" << v3[i] << endl;
}
}
void f4() {
vector<int> v1;
v1.push_back(1);//[1]
// v1.back() == v1.at(v1.size()-1);
cout << v1.back() << endl;//1   back()取出最后一个无素的值
v1.push_back(2);//[1][2]
cout << v1.back() << endl;//2
v1.pop_back();//  pop_back()删除最后一个元素  [1]   删除只能从后面往前删除
cout << v1.back() << endl;//1
}
//修改元素的值
void f5() {
vector<int> v(3, 100);//[100][100][100]


vector<int>::iterator it = v.end();   用迭代器修改迭代器
int i = 200;
for (it = v.begin(); it != v.end(); ++it) {
i++;
*it = i;
cout << *it << endl;
}
}
int main() {
f5();
cout << "" << endl; // prints
return 0;

}


.h文件:

#ifndef STU_H_
#define STU_H_


class Stu {
public:
int age;
Stu(int age);
};


#endif /* STU_H_ */

.cpp文件:

#include "Stu.h"


Stu::Stu(int age) {
this->age = age;
}

<think>好的,我现在需要解决用户提供的Android构建错误。首先,用户遇到了两个问题:一个是关于com.android.support库的包名警告,另一个是AndroidManifest.xml中的权限重复声明警告。我需要分别分析这两个问题,并给出解决方案。 首先,关于Package name 'android.support.graphics.drawable'的警告。这个警告是因为使用了旧版的Android支持库,比如animated-vector-drawable和support-vector-drawable,它们的包名是android.support。而Android现在推荐使用AndroidX库,包名是androidx开头的。因此,解决方案应该是迁移到AndroidX,或者如果暂时不能迁移,可以添加工具命名空间来抑制警告。不过长期来看,迁移到AndroidX更好。用户可能需要检查他们的build.gradle文件,确认是否启用了AndroidX,如果没有的话,需要设置android.useAndroidX=true和android.enableJetifier=true。同时替换依赖库为AndroidX版本。然后是AndroidManifest.xml中的权限重复声明问题。错误信息显示BLUETOOTH和ACCESS_FINE_LOCATION权限被重复声明。这可能是因为在多个地方声明了相同的权限,比如主manifest文件和某个库的manifest文件都声明了这些权限。解决方法是在主manifest文件中使用tools:remove="android.permission.BLUETOOTH"等属性来移除重复的权限。同时确保在合并manifest时处理冲突。 接下来需要给出具体的步骤和代码示例。比如在build.gradle中启用AndroidX,替换依赖,以及在manifest中添加tools:remove属性。还要确保在manifest根元素中声明tools命名空间。 然后考虑用户可能的后续问题,比如如何迁移到AndroidX,处理其他依赖冲突,检查重复权限的方法,以及AndroidX和Support库的区别。这些问题都是用户可能遇到的,因此需要提前准备好答案或者引导用户进一步提问。 总结,解决方案分两部分:处理支持库的包名警告需要迁移到AndroidX或抑制警告;处理权限重复需要移除重复声明。同时提供代码示例和配置更改步骤,确保用户能够一步步操作。最后,相关问题可以帮助用户深入解决可能遇到的类似问题。</think>针对你遇到的Android构建问题,这里提供详细解决方案: 1. **包名警告问题**(Package name 'android.support.graphics.drawable') ```groovy // 在app模块的build.gradle中添加: android { defaultConfig { // 添加以下配置解决support库与androidx冲突 vectorDrawables.useSupportLibrary = true } } dependencies { // 替换为AndroidX依赖 implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0' implementation 'androidx.vectordrawable:vectordrawable:1.1.0' // 移除旧support库依赖 // implementation 'com.android.support:animated-vector-drawable:28.0.0' // implementation 'com.android.support:support-vector-drawable:28.0.0' } ``` 在gradle.properties文件中添加: ``` android.useAndroidX=true android.enableJetifier=true ``` 2. **权限重复声明问题**: ```xml <!-- 在app/src/main/AndroidManifest.xml中 --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="your.package.name"> <!-- 合并时移除重复权限 --> <uses-permission android:name="android.permission.BLUETOOTH" tools:remove="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" tools:remove="android.permission.ACCESS_FINE_LOCATION"/> </manifest> ``` **问题解释**: 1. 包名警告是因为使用了旧的support库,迁移到AndroidX是根本解决方案。Jetifier会自动转换旧库 2. 权限重复是因为多个模块声明了相同权限,tools:remove指令可以消除合并冲突 3. 需要确保所有依赖库都更新为AndroidX版本,可使用Android Studio的"Refactor > Migrate to AndroidX"工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值